⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winwlx.pas

📁 详细Windows API大全有关知识以及相关问题
💻 PAS
📖 第 1 页 / 共 3 页
字号:
type
  PWLX_DESKTOP = ^WLX_DESKTOP;
  {$EXTERNALSYM PWLX_DESKTOP}
  _WLX_DESKTOP = record
    Size: DWORD;
    Flags: DWORD;
    hDesktop: HDESK;
    pszDesktopName: PWSTR;
  end;
  {$EXTERNALSYM _WLX_DESKTOP}
  WLX_DESKTOP = _WLX_DESKTOP;
  {$EXTERNALSYM WLX_DESKTOP}
  TWlxDesktop = WLX_DESKTOP;
  PWlxDesktop = PWLX_DESKTOP;

const
  WLX_DESKTOP_NAME   = $00000001; // Name present
  {$EXTERNALSYM WLX_DESKTOP_NAME}
  WLX_DESKTOP_HANDLE = $00000002; // Handle present
  {$EXTERNALSYM WLX_DESKTOP_HANDLE}

type
  PWLX_USE_CTRL_ALT_DEL = procedure (hWlx: HANDLE); stdcall;
  {$EXTERNALSYM PWLX_USE_CTRL_ALT_DEL}
  PWLX_SET_CONTEXT_POINTER = procedure (hWlx: HANDLE; pWlxContext: PVOID); stdcall;
  {$EXTERNALSYM PWLX_SET_CONTEXT_POINTER}
  PWLX_SAS_NOTIFY = procedure (hWlx: HANDLE; dwSasType: DWORD); stdcall;
  {$EXTERNALSYM PWLX_SAS_NOTIFY}
  PWLX_SET_TIMEOUT = function (hWlx: HANDLE; Timeout: DWORD): BOOL; stdcall;
  {$EXTERNALSYM PWLX_SET_TIMEOUT}
  PWLX_ASSIGN_SHELL_PROTECTION = function (hWlx, hToken, hProcess, hThread: HANDLE): Integer; stdcall;
  {$EXTERNALSYM PWLX_ASSIGN_SHELL_PROTECTION}
  PWLX_MESSAGE_BOX = function (hWlx: HANDLE; hwndOwner: HWND; lpszText,
    lpszTitle: LPWSTR; fuStyle: UINT): Integer; stdcall;
  {$EXTERNALSYM PWLX_MESSAGE_BOX}
  PWLX_DIALOG_BOX = function (hWlx, hInst: HANDLE; lpszTemplate: LPWSTR;
    hwndOwner: HWND; dlgprc: DLGPROC): Integer; stdcall;
  {$EXTERNALSYM PWLX_DIALOG_BOX}
  PWLX_DIALOG_BOX_INDIRECT = function (hWlx, hInst: HANDLE;
    hDialogTemplate: LPCDLGTEMPLATE; hwndOwner: HWND; dlgprc: DLGPROC): Integer; stdcall;
  {$EXTERNALSYM PWLX_DIALOG_BOX_INDIRECT}
  PWLX_DIALOG_BOX_PARAM = function (hWlx, hInst: HANDLE; lpszTemplate: LPWSTR;
    hwndOwner: HWND; dlgprc: DLGPROC; dwInitParam: LPARAM): Integer; stdcall;
  {$EXTERNALSYM PWLX_DIALOG_BOX_PARAM}
  PWLX_DIALOG_BOX_INDIRECT_PARAM = function (hWlx, hInst: HANDLE;
    hDialogTemplate: LPCDLGTEMPLATE; hwndOwner: HWND; dlgprc: DLGPROC;
    dwInitParam: LPARAM): Integer; stdcall;
  {$EXTERNALSYM PWLX_DIALOG_BOX_INDIRECT_PARAM}
  PWLX_SWITCH_DESKTOP_TO_USER = function (hWlx: HANDLE): Integer; stdcall;
  {$EXTERNALSYM PWLX_SWITCH_DESKTOP_TO_USER}
  PWLX_SWITCH_DESKTOP_TO_WINLOGON = function (hWlx: HANDLE): Integer; stdcall;
  {$EXTERNALSYM PWLX_SWITCH_DESKTOP_TO_WINLOGON}
  PWLX_CHANGE_PASSWORD_NOTIFY = function (hWlx: HANDLE;
    var pMprInfo: WLX_MPR_NOTIFY_INFO; dwChangeInfo: DWORD): Integer; stdcall;
  {$EXTERNALSYM PWLX_CHANGE_PASSWORD_NOTIFY}
  PWLX_GET_SOURCE_DESKTOP = function (hWlx: HANDLE; var ppDesktop: PWLX_DESKTOP): BOOL; stdcall;
  {$EXTERNALSYM PWLX_GET_SOURCE_DESKTOP}
  PWLX_SET_RETURN_DESKTOP = function (hWlx: HANDLE; const pDesktop: WLX_DESKTOP): BOOL; stdcall;
  {$EXTERNALSYM PWLX_SET_RETURN_DESKTOP}
  PWLX_CREATE_USER_DESKTOP = function (hWlx, hToken: HANDLE; Flags: DWORD;
    pszDesktopName: PWSTR; var ppDesktop: PWLX_DESKTOP): BOOL; stdcall;
  {$EXTERNALSYM PWLX_CREATE_USER_DESKTOP}

const
  WLX_CREATE_INSTANCE_ONLY = $00000001;
  {$EXTERNALSYM WLX_CREATE_INSTANCE_ONLY}
  WLX_CREATE_USER          = $00000002;
  {$EXTERNALSYM WLX_CREATE_USER}

type
  PWLX_CHANGE_PASSWORD_NOTIFY_EX = function (hWlx: HANDLE;
    const pMprInfo: WLX_MPR_NOTIFY_INFO; dwChangeInfo: DWORD;
    ProviderName: PWSTR; Reserved: PVOID): Integer; stdcall;
  {$EXTERNALSYM PWLX_CHANGE_PASSWORD_NOTIFY_EX}
  PWLX_CLOSE_USER_DESKTOP = function (hWlx: HANDLE; const pDesktop: WLX_DESKTOP;
    hToken: HANDLE): BOOL; stdcall;
  {$EXTERNALSYM PWLX_CLOSE_USER_DESKTOP}
  PWLX_SET_OPTION = function (hWlx: HANDLE; Option: DWORD; Value: ULONG_PTR;
    var OldValue: ULONG_PTR): BOOL; stdcall;
  {$EXTERNALSYM PWLX_SET_OPTION}
  PWLX_GET_OPTION = function (hWlx: HANDLE; Option: DWORD; var Value: ULONG_PTR): BOOL; stdcall;
  {$EXTERNALSYM PWLX_GET_OPTION}
  PWLX_WIN31_MIGRATE = procedure (hWlx: HANDLE); stdcall;
  {$EXTERNALSYM PWLX_WIN31_MIGRATE}
  PWLX_QUERY_CLIENT_CREDENTIALS = function (var pCred: WLX_CLIENT_CREDENTIALS_INFO_V1_0): BOOL; stdcall;
  {$EXTERNALSYM PWLX_QUERY_CLIENT_CREDENTIALS}
  PWLX_QUERY_IC_CREDENTIALS = function (var pCred: WLX_CLIENT_CREDENTIALS_INFO_V1_0): BOOL; stdcall;
  {$EXTERNALSYM PWLX_QUERY_IC_CREDENTIALS}
  PWLX_DISCONNECT = function (): BOOL; stdcall;
  {$EXTERNALSYM PWLX_DISCONNECT}
  PWLX_QUERY_TERMINAL_SERVICES_DATA = function (hWlx: HANDLE;
    var pTSData: WLX_TERMINAL_SERVICES_DATA; UserName, Domain: PWCHAR): DWORD; stdcall;
  {$EXTERNALSYM PWLX_DISCONNECT}

//
// Options that can be get or set:
//

const
  WLX_OPTION_USE_CTRL_ALT_DEL  = $00000001;
  {$EXTERNALSYM WLX_OPTION_USE_CTRL_ALT_DEL}
  WLX_OPTION_CONTEXT_POINTER   = $00000002;
  {$EXTERNALSYM WLX_OPTION_CONTEXT_POINTER}
  WLX_OPTION_USE_SMART_CARD    = $00000003;
  {$EXTERNALSYM WLX_OPTION_USE_SMART_CARD}
  WLX_OPTION_FORCE_LOGOFF_TIME = $00000004;
  {$EXTERNALSYM WLX_OPTION_FORCE_LOGOFF_TIME}
  WLX_OPTION_IGNORE_AUTO_LOGON = $00000008;
  {$EXTERNALSYM WLX_OPTION_IGNORE_AUTO_LOGON}

//
// Options that can be queried only:
//

  WLX_OPTION_SMART_CARD_PRESENT  = $00010001;
  {$EXTERNALSYM WLX_OPTION_SMART_CARD_PRESENT}
  WLX_OPTION_SMART_CARD_INFO     = $00010002;
  {$EXTERNALSYM WLX_OPTION_SMART_CARD_INFO}
  WLX_OPTION_DISPATCH_TABLE_SIZE = $00010003;
  {$EXTERNALSYM WLX_OPTION_DISPATCH_TABLE_SIZE}

////////////////////////////////////////////////////////////////////////
//                                                                    //
//  Function dispatch tables.                                         //
//  One of the following tables will be passed to the GINA DLL        //
//  in the WlxInitialize() call during initialization.                //
//                                                                    //
////////////////////////////////////////////////////////////////////////

type
  PWLX_DISPATCH_VERSION_1_0 = ^WLX_DISPATCH_VERSION_1_0;
  {$EXTERNALSYM PWLX_DISPATCH_VERSION_1_0}
  _WLX_DISPATCH_VERSION_1_0 = record
    WlxUseCtrlAltDel: PWLX_USE_CTRL_ALT_DEL;
    WlxSetContextPointer: PWLX_SET_CONTEXT_POINTER;
    WlxSasNotify: PWLX_SAS_NOTIFY;
    WlxSetTimeout: PWLX_SET_TIMEOUT;
    WlxAssignShellProtection: PWLX_ASSIGN_SHELL_PROTECTION;
    WlxMessageBox: PWLX_MESSAGE_BOX;
    WlxDialogBox: PWLX_DIALOG_BOX;
    WlxDialogBoxParam: PWLX_DIALOG_BOX_PARAM;
    WlxDialogBoxIndirect: PWLX_DIALOG_BOX_INDIRECT;
    WlxDialogBoxIndirectParam: PWLX_DIALOG_BOX_INDIRECT_PARAM;
    WlxSwitchDesktopToUser: PWLX_SWITCH_DESKTOP_TO_USER;
    WlxSwitchDesktopToWinlogon: PWLX_SWITCH_DESKTOP_TO_WINLOGON;
    WlxChangePasswordNotify: PWLX_CHANGE_PASSWORD_NOTIFY;
  end;
  {$EXTERNALSYM _WLX_DISPATCH_VERSION_1_0}
  WLX_DISPATCH_VERSION_1_0 = _WLX_DISPATCH_VERSION_1_0;
  {$EXTERNALSYM WLX_DISPATCH_VERSION_1_0}
  TWlxDispatchVersion1_0 = WLX_DISPATCH_VERSION_1_0;
  PWlxDispatchVersion1_0 = PWLX_DISPATCH_VERSION_1_0;

  PWLX_DISPATCH_VERSION_1_1 = ^WLX_DISPATCH_VERSION_1_1;
  {$EXTERNALSYM PWLX_DISPATCH_VERSION_1_1}
  _WLX_DISPATCH_VERSION_1_1 = record
    WlxUseCtrlAltDel: PWLX_USE_CTRL_ALT_DEL;
    WlxSetContextPointer: PWLX_SET_CONTEXT_POINTER;
    WlxSasNotify: PWLX_SAS_NOTIFY;
    WlxSetTimeout: PWLX_SET_TIMEOUT;
    WlxAssignShellProtection: PWLX_ASSIGN_SHELL_PROTECTION;
    WlxMessageBox: PWLX_MESSAGE_BOX;
    WlxDialogBox: PWLX_DIALOG_BOX;
    WlxDialogBoxParam: PWLX_DIALOG_BOX_PARAM;
    WlxDialogBoxIndirect: PWLX_DIALOG_BOX_INDIRECT;
    WlxDialogBoxIndirectParam: PWLX_DIALOG_BOX_INDIRECT_PARAM;
    WlxSwitchDesktopToUser: PWLX_SWITCH_DESKTOP_TO_USER;
    WlxSwitchDesktopToWinlogon: PWLX_SWITCH_DESKTOP_TO_WINLOGON;
    WlxChangePasswordNotify: PWLX_CHANGE_PASSWORD_NOTIFY;
    WlxGetSourceDesktop: PWLX_GET_SOURCE_DESKTOP;
    WlxSetReturnDesktop: PWLX_SET_RETURN_DESKTOP;
    WlxCreateUserDesktop: PWLX_CREATE_USER_DESKTOP;
    WlxChangePasswordNotifyEx: PWLX_CHANGE_PASSWORD_NOTIFY_EX;
  end;
  {$EXTERNALSYM _WLX_DISPATCH_VERSION_1_1}
  WLX_DISPATCH_VERSION_1_1 = _WLX_DISPATCH_VERSION_1_1;
  {$EXTERNALSYM WLX_DISPATCH_VERSION_1_1}
  TWlxDispatchVersion1_1 = WLX_DISPATCH_VERSION_1_1;
  PWlxDispatchVersion1_1 = PWLX_DISPATCH_VERSION_1_1;

  PWLX_DISPATCH_VERSION_1_2 = ^WLX_DISPATCH_VERSION_1_2;
  {$EXTERNALSYM PWLX_DISPATCH_VERSION_1_2}
  _WLX_DISPATCH_VERSION_1_2 = record
    WlxUseCtrlAltDel: PWLX_USE_CTRL_ALT_DEL;
    WlxSetContextPointer: PWLX_SET_CONTEXT_POINTER;
    WlxSasNotify: PWLX_SAS_NOTIFY;
    WlxSetTimeout: PWLX_SET_TIMEOUT;
    WlxAssignShellProtection: PWLX_ASSIGN_SHELL_PROTECTION;
    WlxMessageBox: PWLX_MESSAGE_BOX;
    WlxDialogBox: PWLX_DIALOG_BOX;
    WlxDialogBoxParam: PWLX_DIALOG_BOX_PARAM;
    WlxDialogBoxIndirect: PWLX_DIALOG_BOX_INDIRECT;
    WlxDialogBoxIndirectParam: PWLX_DIALOG_BOX_INDIRECT_PARAM;
    WlxSwitchDesktopToUser: PWLX_SWITCH_DESKTOP_TO_USER;
    WlxSwitchDesktopToWinlogon: PWLX_SWITCH_DESKTOP_TO_WINLOGON;
    WlxChangePasswordNotify: PWLX_CHANGE_PASSWORD_NOTIFY;
    WlxGetSourceDesktop: PWLX_GET_SOURCE_DESKTOP;
    WlxSetReturnDesktop: PWLX_SET_RETURN_DESKTOP;
    WlxCreateUserDesktop: PWLX_CREATE_USER_DESKTOP;
    WlxChangePasswordNotifyEx: PWLX_CHANGE_PASSWORD_NOTIFY_EX;
    WlxCloseUserDesktop : PWLX_CLOSE_USER_DESKTOP;
  end;
  {$EXTERNALSYM _WLX_DISPATCH_VERSION_1_2}
  WLX_DISPATCH_VERSION_1_2 = _WLX_DISPATCH_VERSION_1_2;
  {$EXTERNALSYM WLX_DISPATCH_VERSION_1_2}
  TWlxDispatchVersion1_2 = WLX_DISPATCH_VERSION_1_2;
  PWlxDispatchVersion1_2 = PWLX_DISPATCH_VERSION_1_2;

  PWLX_DISPATCH_VERSION_1_3 = ^WLX_DISPATCH_VERSION_1_3;
  {$EXTERNALSYM PWLX_DISPATCH_VERSION_1_3}
  _WLX_DISPATCH_VERSION_1_3 = record
    WlxUseCtrlAltDel: PWLX_USE_CTRL_ALT_DEL;
    WlxSetContextPointer: PWLX_SET_CONTEXT_POINTER;
    WlxSasNotify: PWLX_SAS_NOTIFY;
    WlxSetTimeout: PWLX_SET_TIMEOUT;
    WlxAssignShellProtection: PWLX_ASSIGN_SHELL_PROTECTION;
    WlxMessageBox: PWLX_MESSAGE_BOX;
    WlxDialogBox: PWLX_DIALOG_BOX;
    WlxDialogBoxParam: PWLX_DIALOG_BOX_PARAM;
    WlxDialogBoxIndirect: PWLX_DIALOG_BOX_INDIRECT;
    WlxDialogBoxIndirectParam: PWLX_DIALOG_BOX_INDIRECT_PARAM;
    WlxSwitchDesktopToUser: PWLX_SWITCH_DESKTOP_TO_USER;
    WlxSwitchDesktopToWinlogon: PWLX_SWITCH_DESKTOP_TO_WINLOGON;
    WlxChangePasswordNotify: PWLX_CHANGE_PASSWORD_NOTIFY;
    WlxGetSourceDesktop: PWLX_GET_SOURCE_DESKTOP;
    WlxSetReturnDesktop: PWLX_SET_RETURN_DESKTOP;
    WlxCreateUserDesktop: PWLX_CREATE_USER_DESKTOP;
    WlxChangePasswordNotifyEx: PWLX_CHANGE_PASSWORD_NOTIFY_EX;
    WlxCloseUserDesktop : PWLX_CLOSE_USER_DESKTOP;
    WlxSetOption: PWLX_SET_OPTION;
    WlxGetOption: PWLX_GET_OPTION;
    WlxWin31Migrate: PWLX_WIN31_MIGRATE;
    WlxQueryClientCredentials: PWLX_QUERY_CLIENT_CREDENTIALS;
    WlxQueryInetConnectorCredentials: PWLX_QUERY_IC_CREDENTIALS;
    WlxDisconnect: PWLX_DISCONNECT;
    WlxQueryTerminalServicesData: PWLX_QUERY_TERMINAL_SERVICES_DATA;
  end;
  {$EXTERNALSYM _WLX_DISPATCH_VERSION_1_3}
  WLX_DISPATCH_VERSION_1_3 = _WLX_DISPATCH_VERSION_1_3;
  {$EXTERNALSYM WLX_DISPATCH_VERSION_1_3}
  TWlxDispatchVersion1_3 = WLX_DISPATCH_VERSION_1_3;
  PWlxDispatchVersion1_3 = PWLX_DISPATCH_VERSION_1_3;

//
// Non-GINA notification DLLs
//

  PFNMSGECALLBACK = function (bVerbose: BOOL; lpMessage: LPWSTR): DWORD; stdcall;
  {$EXTERNALSYM PFNMSGECALLBACK}
  TFnMsgeCallback = PFNMSGECALLBACK;

  PWLX_NOTIFICATION_INFO = ^WLX_NOTIFICATION_INFO;
  {$EXTERNALSYM PWLX_NOTIFICATION_INFO}
  _WLX_NOTIFICATION_INFO = record
    Size: ULONG;
    Flags: ULONG;
    UserName: PWSTR;
    Domain: PWSTR;
    WindowStation: PWSTR;
    hToken: HANDLE;
    hDesktop: HDESK;
    pStatusCallback: PFNMSGECALLBACK;
  end;
  {$EXTERNALSYM _WLX_NOTIFICATION_INFO}
  WLX_NOTIFICATION_INFO = _WLX_NOTIFICATION_INFO;
  {$EXTERNALSYM WLX_NOTIFICATION_INFO}
  TWlxNotificationInfo = WLX_NOTIFICATION_INFO;
  PWlxNotificationInfo = PWLX_NOTIFICATION_INFO;

implementation

{$IFDEF IMPORT_MS_GINA}

const
  msgina = 'msgina.dll';

{$IFDEF MSGINA1_0}

function WlxNegotiate; external msgina name 'WlxNegotiate';
function WlxInitialize; external msgina name 'WlxInitialize';
procedure WlxDisplaySASNotice; external msgina name 'WlxDisplaySASNotice';
function WlxLoggedOutSAS; external msgina name 'WlxLoggedOutSAS';
function WlxActivateUserShell; external msgina name 'WlxActivateUserShell';
function WlxLoggedOnSAS; external msgina name 'WlxLoggedOnSAS';
procedure WlxDisplayLockedNotice; external msgina name 'WlxDisplayLockedNotice';
function WlxWkstaLockedSAS; external msgina name 'WlxWkstaLockedSAS';
function WlxIsLockOk; external msgina name 'WlxIsLockOk';
function WlxIsLogoffOk; external msgina name 'WlxIsLogoffOk';
procedure WlxLogoff; external msgina name 'WlxLogoff';
procedure WlxShutdown; external msgina name 'WlxShutdown';

{$ENDIF}

{$IFDEF MSGINA1_1}

function WlxScreenSaverNotify; external msgina name 'WlxScreenSaverNotify';
function WlxStartApplication; external msgina name 'WlxStartApplication';

{$ENDIF}

{$IFDEF MSGINA1_3}

function WlxNetworkProviderLoad; external msgina name 'WlxNetworkProviderLoad';
function WlxDisplayStatusMessage; external msgina name 'WlxDisplayStatusMessage';
function WlxGetStatusMessage; external msgina name 'WlxGetStatusMessage';
function WlxRemoveStatusMessage; external msgina name 'WlxRemoveStatusMessage';

{$ENDIF}

{$ENDIF IMPORT_MS_GINA}

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -