我用了EixtWindows(EWX_SHUTDOWN,32)实现关机,发现
98下是可以的,但2000下不行,函数的问题,有谁知道怎么实现?

解决方案 »

  1.   

    用ExitWindowsEx(EWX_SHUTDOWN,0)可以的
      

  2.   

    在 Win32中,Exitwindows()只是注销当前的用户,然后让其他的用户登陆
      

  3.   

    2000下关机不是简单的一个过程就能实现的
    给你现面的代码,这个是可以的procedure offcomputer;
    var
            hToken:THandle;
            tkp : TOKEN_PRIVILEGES;
            ReturnLength : DWord;
    begin
            if (not OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_ALL_ACCESS or  TOKEN_QUERY, hToken))then
            begin
                    application.Terminate;
            end;
            LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);
            tkp.PrivilegeCount := 1;
            tkp.Privileges[0].Attributes :=SE_PRIVILEGE_ENABLED;
            ReturnLength :=0;
            AdjustTokenPrivileges(hToken, FALSE, tkp, 0,nil,ReturnLength);
            if (GetLastError() <> ERROR_SUCCESS) then
            begin
                                   application.Terminate;
            end;        if (not ExitWindowsEx(EWX_POWEROFF, 0)) then
            begin
               application.Terminate;
            end;   
    end;
    可以直接调用这个过程至于重启怎么实现就不用再说了把里面的一个参数改一下就Ok了