windows-nt/Source/XPSP1/NT/ds/published/inc/wincrui.w
2020-09-26 16:20:57 +08:00

290 lines
8.1 KiB
OpenEdge ABL

//=============================================================================
// 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 <wincred.h>
#include <commctrl.h>
#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