我用了ExitWindowsEx这个函数,可是不行.
解决方案 »
- 急,请求帮忙封装成第三方控件
- 求救:有不少问题:delphi的内部错误:URW3537...
- 急急急!!!怎样利用delphi6.0的installsheild制作中文安装程序?
- 我想用postmessage关闭某个窗口,代码怎么写呀?
- 执行程序时发生这样的错误提示,不知道该怎么处理?
- 高手帮忙,这有什么错呢???
- quickreport的页边距和分页问题????急急急急急急急急急
- 在线高分求救,急等!!!!!
- 请教高手:ADOConnection 连接问题 ...请多多指教,在线等...
- 请问:“哪里能下载CHARLIE CALVERT(或李维)的有关DELPHI的书”
- 有的软件是10客户端、8客户端,请问这样的客户端多少怎么控制?
- 有关DBGRID的问题.
ExitWindowsEx(EWX_LOGOFF , 0); //注销
ExitWindowsEx(EWX_SHUTDOWN, 0); //关机,但是,不关闭电源
ExitWindowsEx(EWX_REBOOT , 0); // 重启
ExitWindowsEx(EWX_FORCE , 0); //强制关机
ExitWindowsEx(EWX_POWEROFF, 0); //关机,并且关闭电源
ExitWindowsEx(EWX_FORCEIFHUNG , 0); //这个我自己测试通过的
private
{ Private declarations }
procedure AdjustToken; // 在private里面添加然后定义
procedure TForm1.AdjustToken;
var
hdlProcessHandle : Cardinal;
hdlTokenHandle : Cardinal;
tmpLuid : Int64;
tkp : TOKEN_PRIVILEGES;
tkpNewButIgnored : TOKEN_PRIVILEGES;
lBufferNeeded : Cardinal;
Privilege : array[0..0] of _LUID_AND_ATTRIBUTES;
begin
hdlProcessHandle := GetCurrentProcess;
OpenProcessToken(hdlProcessHandle,
(TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY),
hdlTokenHandle);
// Get the LUID for shutdown privilege.
LookupPrivilegeValue('', 'SeShutdownPrivilege', tmpLuid);
Privilege[0].Luid := tmpLuid;
Privilege[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1; // One privilege to set
tkp.Privileges[0] := Privilege[0];
// Enable the shutdown privilege in the access token of this process.
AdjustTokenPrivileges(hdlTokenHandle,False,tkp,Sizeof(tkpNewButIgnored),
tkpNewButIgnored,lBufferNeeded);
end;
最后调用procedure TForm1.Button2Click(Sender: TObject);
begin
AdjustToken;
exitwindowsex(EWX_FORCE + EWX_SHUTDOWN ,0);
end;
以上适用于 2k和xp,我都测试过