//============================================================================= // Copyright (c) 2000 Microsoft Corporation // // wincrui.h // // Contains the public structures and functions for the credential manager // user interface APIs. // // Created 02/17/2000 johnstep (John Stephens) //============================================================================= #ifndef __WINCRUI_H__ #define __WINCRUI_H__ #include #include #ifdef __cplusplus extern "C" { #endif //----------------------------------------------------------------------------- // Functions //----------------------------------------------------------------------------- CREDUIAPI BOOL WINAPI CredUIInitControls(); // call this api to store a single-sign-on credential // retruns ERROR_SUCCESS if success // // pszRealm - if this is null, we will use the default realm CREDUIAPI DWORD WINAPI CredUIStoreSSOCredA ( PCSTR pszRealm, PCSTR pszUsername, PCSTR pszPassword, BOOL bPersist ); #ifdef UNICODE #define CredUIStoreSSOCred CredUIStoreSSOCredW #else #define CredUIStoreSSOCred CredUIStoreSSOCredA #endif // call this api to retrieve the username for a single-sign-on credential // retruns ERROR_SUCCESS if success, ERROR_NOT_FOUND if none was found // pszRealm - if this is null, we will use the default realm // // Caller should call LocalFree on *ppszUsername returned if ERROR_SUCCESS // CREDUIAPI DWORD WINAPI CredUIReadSSOCredA ( PCSTR pszRealm, PSTR* ppszUsername ); #ifdef UNICODE #define CredUIReadSSOCred CredUIReadSSOCredW #else #define CredUIReadSSOCred CredUIReadSSOCredA #endif //----------------------------------------------------------------------------- // Credential Control //----------------------------------------------------------------------------- // Class #define WC_CREDENTIALA "SysCredential" #define WC_CREDENTIALW L"SysCredential" #ifdef UNICODE #define WC_CREDENTIAL WC_CREDENTIALW #else #define WC_CREDENTIAL WC_CREDENTIALA #endif // Styles #define CRS_USERNAMES 0x0001 #define CRS_CERTIFICATES 0x0002 #define CRS_SMARTCARDS 0x0004 #define CRS_ADMINISTRATORS 0x0008 #define CRS_AUTOCOMPLETE 0x0010 #define CRS_BALLOONS 0x0020 #define CRS_SAVECHECK 0x0040 #define CRS_COMPLETEUSERNAME 0x0080 #define CRS_PREFILLADMIN 0x0100 #define CRS_SINGLESIGNON 0x0200 #define CRS_KEEPUSERNAME 0x0400 #define CRS_NORMAL (CRS_AUTOCOMPLETE | CRS_BALLOONS) #define CREDUI_CONTROL_MIN_WIDTH 188 #define CREDUI_CONTROL_MIN_HEIGHT 30 #define CREDUI_CONTROL_ADD_SAVE 17 #define CREDUI_CONTROL_FULL_HEIGHT (CREDUI_CONTROL_MIN_HEIGHT +\ CREDUI_CONTROL_ADD_SAVE ) // Messages #define CRM_FIRST 0x1000 #define CRM_INITSTYLE (CRM_FIRST + 1) #define CRM_SETUSERNAMEMAX (CRM_FIRST + 2) #define CRM_SETPASSWORDMAX (CRM_FIRST + 3) #define CRM_SETUSERNAMEA (CRM_FIRST + 4) #define CRM_SETUSERNAMEW (CRM_FIRST + 5) #define CRM_GETUSERNAMEA (CRM_FIRST + 6) #define CRM_GETUSERNAMEW (CRM_FIRST + 7) #define CRM_SETPASSWORDA (CRM_FIRST + 8) #define CRM_SETPASSWORDW (CRM_FIRST + 9) #define CRM_GETPASSWORDA (CRM_FIRST + 10) #define CRM_GETPASSWORDW (CRM_FIRST + 11) #define CRM_SETFOCUS (CRM_FIRST + 12) #define CRM_SHOWBALLOONA (CRM_FIRST + 13) #define CRM_SHOWBALLOONW (CRM_FIRST + 14) #define CRM_GETMINSIZE (CRM_FIRST + 15) #define CRM_SETCHECK (CRM_FIRST + 16) #define CRM_GETCHECK (CRM_FIRST + 17) #define CRM_GETUSERNAMELENGTH (CRM_FIRST + 18) #define CRM_GETPASSWORDLENGTH (CRM_FIRST + 19) #define CRM_GETUSERNAMEMAX (CRM_FIRST + 20) #define CRM_GETPASSWORDMAX (CRM_FIRST + 21) #define CRM_DOCMDLINE (CRM_FIRST + 22) #define CRM_ENABLEUSERNAME (CRM_FIRST + 23) #define CRM_DISABLEUSERNAME (CRM_FIRST + 24) // Notification Messages #define CRN_USERNAMECHANGE 1 #define CRN_PASSWORDCHANGE 2 #ifdef UNICODE #define CRM_SETUSERNAME CRM_SETUSERNAMEW #define CRM_GETUSERNAME CRM_GETUSERNAMEW #define CRM_SETPASSWORD CRM_SETPASSWORDW #define CRM_GETPASSWORD CRM_GETPASSWORDW #define CRM_SHOWBALLOON CRM_SHOWBALLOONW #else #define CRM_SETUSERNAME CRM_SETUSERNAMEA #define CRM_GETUSERNAME CRM_GETUSERNAMEA #define CRM_SETPASSWORD CRM_SETPASSWORDA #define CRM_GETPASSWORD CRM_GETPASSWORDA #define CRM_SHOWBALLOON CRM_SHOWBALLOONA #endif // Types and Values for Messages #define CREDUI_CONTROL_USERNAME 1 #define CREDUI_CONTROL_PASSWORD 2 #define CREDUI_CONTROL_SAVE 3 #define CREDUI_MAX_BALLOON_TITLE_LENGTH 255 #define CREDUI_MAX_BALLOON_MESSAGE_LENGTH 255 #define CREDUI_BALLOON_ICON_NONE TTI_NONE #define CREDUI_BALLOON_ICON_INFO TTI_INFO #define CREDUI_BALLOON_ICON_WARNING TTI_WARNING #define CREDUI_BALLOON_ICON_ERROR TTI_ERROR typedef struct _CREDUI_BALLOONA { DWORD dwVersion; INT iControl; INT iIcon; PSTR pszTitleText; PSTR pszMessageText; } CREDUI_BALLOONA, *PCREDUI_BALLOONA; typedef struct _CREDUI_BALLOONW { DWORD dwVersion; INT iControl; INT iIcon; PWSTR pszTitleText; PWSTR pszMessageText; } CREDUI_BALLOONW, *PCREDUI_BALLOONW; #ifdef UNICODE typedef CREDUI_BALLOONW CREDUI_BALLOON; typedef PCREDUI_BALLOONW PCREDUI_BALLOON; #else typedef CREDUI_BALLOONA CREDUI_BALLOON; typedef PCREDUI_BALLOONA PCREDUI_BALLOON; #endif // Macros #define Credential_InitStyle(hwnd, style)\ (BOOL) SendMessage(hwnd, CRM_INITSTYLE, (WPARAM)(style), 0) #define Credential_SetUserNameMaxChars(hwnd, maxChars)\ (BOOL) SendMessage(hwnd, CRM_SETUSERNAMEMAX, (WPARAM)(maxChars), 0) #define Credential_EnableUserName(hwnd)\ (BOOL) SendMessage(hwnd, CRM_ENABLEUSERNAME, (WPARAM)(0), 0) #define Credential_DisableUserName(hwnd)\ (BOOL) SendMessage(hwnd, CRM_DISABLEUSERNAME, (WPARAM)(0), 0) #define Credential_SetPasswordMaxChars(hwnd, maxChars)\ (BOOL) SendMessage(hwnd, CRM_SETPASSWORDMAX, (WPARAM)(maxChars), 0) #define Credential_SetUserName(hwnd, pszUserName)\ (BOOL) SendMessage(hwnd, CRM_SETUSERNAME, 0, (LPARAM)(pszUserName)) #define Credential_GetUserName(hwnd, pszUserName, maxChars)\ (BOOL) SendMessage(hwnd, CRM_GETUSERNAME, WPARAM(maxChars),\ (LPARAM)(pszUserName)) #define Credential_SetPassword(hwnd, pszPassword)\ (BOOL) SendMessage(hwnd, CRM_SETPASSWORD, 0, (LPARAM)(pszPassword)) #define Credential_GetPassword(hwnd, pszPassword, maxChars)\ (BOOL) SendMessage(hwnd, CRM_GETPASSWORD, WPARAM(maxChars),\ (LPARAM)(pszPassword)) #define Credential_SetUserNameFocus(hwnd)\ (BOOL) SendMessage(hwnd, CRM_SETFOCUS, CREDUI_CONTROL_USERNAME, 0) #define Credential_SetPasswordFocus(hwnd)\ (BOOL) SendMessage(hwnd, CRM_SETFOCUS, CREDUI_CONTROL_PASSWORD, 0) #define Credential_ShowUserNameBalloon(hwnd, image, title, message){\ CREDUI_BALLOON balloon = { 1, CREDUI_CONTROL_USERNAME,\ image, title, message };\ (BOOL) SendMessage(hwnd, CRM_SHOWBALLOON, 0, (LPARAM)(&balloon));} #define Credential_ShowPasswordBalloon(hwnd, image, title, message){\ CREDUI_BALLOON balloon = { 1, CREDUI_CONTROL_PASSWORD,\ image, title, message };\ (BOOL) SendMessage(hwnd, CRM_SHOWBALLOON, 0, (LPARAM)(&balloon));} #define Credential_HideBalloon(hwnd)\ (BOOL) SendMessage(hwnd, CRM_SHOWBALLOON, 0, NULL) #define Credential_GetMinSize(hwnd, rect)\ (BOOL) SendMessage(hwnd, CRM_GETMINSIZE, 0, (LPARAM) &rect) #define Credential_CheckSave(hwnd, enabled)\ (BOOL) SendMessage(hwnd, CRM_SETCHECK, CREDUI_CONTROL_SAVE, enabled) #define Credential_IsSaveChecked(hwnd)\ (BOOL) SendMessage(hwnd, CRM_GETCHECK, CREDUI_CONTROL_SAVE, 0) #define Credential_GetUserNameLength(hwnd)\ (LONG) SendMessage(hwnd, CRM_GETUSERNAMELENGTH, 0, 0) #define Credential_GetPasswordLength(hwnd)\ (LONG) SendMessage(hwnd, CRM_GETPASSWORDLENGTH, 0, 0) #define Credential_GetUserNameMax(hwnd)\ (ULONG) SendMessage(hwnd, CRM_GETUSERNAMEMAX, 0, 0) #define Credential_GetPasswordMax(hwnd)\ (ULONG) SendMessage(hwnd, CRM_GETPASSWORDMAX, 0, 0) //----------------------------------------------------------------------------- #ifdef __cplusplus } #endif #endif