DELPHI中调用API函数ExitWindowsEX可以实现系统的关机,注销,和重启。
关机:ExitWindowsEx(EWX_POWEROFF OR EWD SHUTDOWN,0)
注销:ExitWindowsEx(EWX_LOGOFF,0)
重启:ExitWindowsEx(EWX_REBOOT,0)
不过函数ExitWindowsEx在完成系统的关机、注销、重启动作之前必须要使应用程序获得系统相应的权限。
可以在窗体初始化时进行操作:
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;
执行以上代码,应用程序就获得了系统关机、注销、重启的权限了,然后加上ExitWindowsEx(EWX_POWEROFF OR EWD SHUTDOWN,0)就行了。
在xp中运行成功。