EWX_FORCE = 4
EWX_LOGOFF = 0
EWX_REBOOT = 2
EWX_SHUTDOWN = 1

解决方案 »

  1.   

    好象在Win2K和WinXP中需要将EWX_SHUTDOWN 和EWX_FORCE 一起使用。
    下面是一个例子,改自VC
    if not ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0) then
        error("ExitWindowsEx"); 在Win2k,NT,XP下你使用EWX_FORCE关闭了你所运行的进程,而系统级别的进程,并没有关闭,所以要关闭就要对系统发出EWX_SHUTDOWN 命令.
    先试一试吧。
      

  2.   

    procedure TForm1.reboot;
    var
    VerInfo:TOSVersionInfo;
    hToken:THANDLE;
    tkp:TOKEN_PRIVILEGES;
    Nothing:Cardinal;
    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_POWEROFF,0);//这句就是关机
    ExitWindowsEx(EWX_REBOOT,0);
    end; 
      

  3.   

    你把鼠标放在ExWinddowsEx()上面按F1,看看说明就知道了,有些是WIN2K里不能用的
      

  4.   

    EWX_SHUTDOWN 和EWX_FORCE 一起使用