BOOL ExitWindowsEx( UINT uFlags, // shutdown operation DWORD dwReserved // reserved ); uFlags [in] Specifies the type of shutdown. This parameter must include one of the following values. Value Meaning EWX_LOGOFF Shuts down all processes running in the security context of the process that called the ExitWindowsEx function. Then it logs the user off. EWX_POWEROFF Shuts down the system and turns off the power. The system must support the power-off feature. Windows NT/2000: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Res section.
EWX_REBOOT Shuts down the system and then restarts the system. Windows NT/2000: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Res section.
EWX_SHUTDOWN Shuts down the system to a point at which it is safe to turn off the power. All file buffers have been flushed to disk, and all running processes have stopped. Windows NT/2000: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Res section.
This parameter can optionally include the following values. Value Meaning EWX_FORCE Forces processes to terminate. When this flag is set, the system does not send the WM_QUERYENDSESSION and WM_ENDSESSION messages. This can cause the applications to lose data. Therefore, you should only use this flag in an emergency. EWX_FORCEIFHUNG Windows 2000: Forces processes to terminate if they do not respond to the WM_QUERYENDSESSION or WM_ENDSESSION message. This flag is ignored if EWX_FORCE is used.
UINT uFlags, // shutdown operation
DWORD dwReserved // reserved
);
uFlags
[in] Specifies the type of shutdown. This parameter must include one of the following values. Value Meaning
EWX_LOGOFF Shuts down all processes running in the security context of the process that called the ExitWindowsEx function. Then it logs the user off.
EWX_POWEROFF Shuts down the system and turns off the power. The system must support the power-off feature.
Windows NT/2000: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Res section.
EWX_REBOOT Shuts down the system and then restarts the system.
Windows NT/2000: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Res section.
EWX_SHUTDOWN Shuts down the system to a point at which it is safe to turn off the power. All file buffers have been flushed to disk, and all running processes have stopped.
Windows NT/2000: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Res section.
This parameter can optionally include the following values. Value Meaning
EWX_FORCE Forces processes to terminate. When this flag is set, the system does not send the WM_QUERYENDSESSION and WM_ENDSESSION messages. This can cause the applications to lose data. Therefore, you should only use this flag in an emergency.
EWX_FORCEIFHUNG Windows 2000: Forces processes to terminate if they do not respond to the WM_QUERYENDSESSION or WM_ENDSESSION message. This flag is ignored if EWX_FORCE is used.
再者:即使系统发了消息,从消息的参数中也只能区分出“注销”来,关机和重启是区分不出来的,因为两者给的参数都一样,我试过。所以依我看还得截获API。
typedef int (CALLBACK *SHUTDOWNDLG) int;//显示关机对话框的指针HINSTANCE hInst = LoadLibrary("shell32.dll");
SHUTDOWNDLG ShutDownDialog;
if(hInst!=NULL)
{
ShutDownDialog = (SHUTDOWNDLG) GetProcAddress(hInst,(LPSTR)60);
(*ShutDownDialog(0));
}
[email protected]
InitiateSystemShutdown(Ex)