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自己的
关机菜单就可以关闭电源,而用代码就不行!

解决方案 »

  1.   

    试试
    ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF or EWX_FORCE,0);
      

  2.   

    参数使用
    EWX_SHUTDOWN /EWX_POWEROFF 
    在98下可以,2000/XP就有问题,我也没解决,
      

  3.   

    ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF or EWX_FORCE,0);
    可以关机,我已调试通过。WIN2000+SP3+D6下。
    代码无问题。
      

  4.   

    ExitWindowsEx 是可以断开电源的,如果是使用 InitiateSystemShutdown就不能断电
      

  5.   

    肯定是主板的bios里面没有设置高级电源管理enable不过前提是主板支持高级电源管理。 这个跟代码没有关系的。
    不信的话,可以点击开始菜单-》然后是关闭系统。照样出现的是那个画面。
      

  6.   

    WWWWA(aaaa)的代码果然行!问一下:参数中加or起什么作用?