procedure TForm1.Shutdown();
var
rl: Cardinal;
hToken: Cardinal;
tkp: TOKEN_PRIVILEGES;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
begin
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1;
AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
end;
ExitWindowsEx(EWX_SHUTDOWN,0);
end;在win2000的环境下运行后,可以出现“可以安全的关闭计算机了”的画面,
却无法关闭机箱电源。为什么不能像os里关机一样,同时关闭机箱电源呢?
我已经启用了高级电源管理。在系统设置不变的情况下,用win2000自己的
关机菜单就可以关闭电源,而用代码就不行!
var
rl: Cardinal;
hToken: Cardinal;
tkp: TOKEN_PRIVILEGES;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
begin
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1;
AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
end;
ExitWindowsEx(EWX_SHUTDOWN,0);
end;在win2000的环境下运行后,可以出现“可以安全的关闭计算机了”的画面,
却无法关闭机箱电源。为什么不能像os里关机一样,同时关闭机箱电源呢?
我已经启用了高级电源管理。在系统设置不变的情况下,用win2000自己的
关机菜单就可以关闭电源,而用代码就不行!
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF or EWX_FORCE,0);
EWX_SHUTDOWN /EWX_POWEROFF
在98下可以,2000/XP就有问题,我也没解决,
可以关机,我已调试通过。WIN2000+SP3+D6下。
代码无问题。
不信的话,可以点击开始菜单-》然后是关闭系统。照样出现的是那个画面。