DELPHI中調用API函數ExitWindowsEX可以實(shí)現系統的關(guān)機,注銷(xiāo),和重啟。
關(guān)機:ExitWindowsEx(EWX_POWEROFF OR EWD SHUTDOWN,0)
注銷(xiāo):ExitWindowsEx(EWX_LOGOFF,0)
重啟:ExitWindowsEx(EWX_REBOOT,0)
不過(guò)函數ExitWindowsEx在完成系統的關(guān)機、注銷(xiāo)、重啟動(dòng)作之前必須要使應用程序獲得系統相應的權限。
可以在窗體初始化時(shí)進(jìn)行操作:
procedure TForm1.FormCreate(Sender: TObject);
var
hToken : THandle;
Tkp : TTokenPrivileges;
Zero:DWORD;
begin
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY,hToken);
LookupPrivilegeValue(nil,‘SeShutdownPrivilege‘,tkp.Privileges[0].Luid);
Tkp.PrivilegeCount :=1;
Tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,False,Tkp,SizeOf(TTokenPrivileges),nil,Zero);
end;
執行以上代碼,應用程序就獲得了系統關(guān)機、注銷(xiāo)、重啟的權限了,然后加上ExitWindowsEx(EWX_POWEROFF OR EWD SHUTDOWN,0)就行了。
在xp中運行成功。

