我单单用ExitWindowsEx(EWX_SHUTDOWN,0);
关不了,应该怎么写.

解决方案 »

  1.   

    提升关机权限{ 
    注销:MyExitWindows(EWX_LogOff);
       重启:MyExitWindows(EWX_REBOOT);
        关机:MyExitWindows(EWX_SHUTDOWN);
    }
    function SetShutdownPrivilege(Enable: Boolean): Boolean;
    var
      PrevPrivileges: TTokenPrivileges;
      Privileges: TTokenPrivileges;
      Token: THandle;
      dwRetLen: DWord;
    begin
      Result := False;
      OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token);
      Privileges.PrivilegeCount := 1;
      if LookupPrivilegeValue(nil,'SeShutdownPrivilege', Privileges.Privileges[0].LUID) then
      begin
        if Enable then
          Privileges.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
        else
          Privileges.Privileges[0].Attributes := 0;
        dwRetLen := 0;
        Result := AdjustTokenPrivileges(Token, False, Privileges, SizeOf(PrevPrivileges), PrevPrivileges, dwRetLen);
      end;
      CloseHandle(Token);
    end;procedure MyExitWindows(const P:Word);
    begin
      Application.Terminate;
      if IsWin9x then
        ExitWindowsEx(EWX_FORCE or P, 0)
      else
      begin
        SetShutdownPrivilege(True);
        ExitWindowsEx(EWX_FORCE or P, 0);
        SetShutdownPrivilege(False);
      end;
    end;
      

  2.   

    谢谢 jinjazz(近身剪(充电中...)) 
    我刚刚试过了..运行到.if IsWin9x then 就过不去..
    我改了一下..因为我在2000下面试了..
    procedure MyExitWindows(const P:Word);
    begin
        SetShutdownPrivilege(True);
        ExitWindowsEx(EWX_FORCE or P, 0);
        SetShutdownPrivilege(False);
    end;
    可以关了.不过不是智能关机..出现可以安全关机了..这是怎么回事.
      

  3.   

    知道怎么弄了..要用poweroff 谢谢