如何知道WIN2003的关机动作是要重新启动系统还是要关机,我需要针对不同的情况进行处理。

解决方案 »

  1.   

    procedure TForm1.Button2Click(Sender: TObject);
    var EWX_SHUTDOWN,EWX_FORCE:integer;
        VerInfo: TOSVersionInfo;
        hToken: THANDLE;
        tkp: TOKEN_PRIVILEGES;
        Nothing: Cardinal;begin
    EWX_SHUTDOWN:=1;
    EWX_FORCE:=4;begin
      VerInfo.dwOSVersionInfoSize := SizeOf(VerInfo);
      GetVersionEx(VerInfo);
        if VerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then 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, 0, nil, Nothing);
        end;
        ExitWindowsEx(EWX_FORCE + EWX_SHUTDOWN + EWX_POWEROFF, 0);
    end;EXITWINDOWSEX(EWX_POWEROFF,0);
    EXITWINDOWSEX(EWX_FORCE OR EWX_SHUTDOWN,0);
    end;
      

  2.   

    谢谢楼上的,怎么让WIN2003关机我会的我想知道的是当WIN2003要退出时是要重新启动系统还是要关机