你是不是在windows nt下使用该函数,请说具体些。

解决方案 »

  1.   

    对于Windows NT,必须有 SE_SHUTDOWN_NAME 的安全特权。 
      

  2.   

    ExitWindowsEx函数使用详解:ExitWindowsEx(Flage, 0) 
    // 如果成功返回 True. 
    Flags可用参数: EWX_LOGOFF: 
    (=0) 
    安全地关闭所有进程,并关闭用户登录。 EWX_SHUTDOWN: 
    (=1) 
    关闭系统。所有缓冲区的内容都能被安全的存盘,所有进程都将被停止。 
    对于Windows NT: 必须有 SE_SHUTDOWN_NAME 的安全特权方可进行此项操作。 
    对于Windows 95: 不必有任何特权。 EWX_REBOOT: 
    (=2) 
    关闭并重新启动系统。 
    对于Windows NT: 必须有 SE_SHUTDOWN_NAME 的安全特权方可进行此项操作。 
    对于Windows 95: 不必有任何特权。 EWX_FORCE: 
    (=4) 
    强制切断连接,关闭所有应用程序。当使用这个参数时,Windows 将不向正在运行的应用程序发送 WM_QUERYENDSESSION 和 WM_ENDSESSION 消息,有可能造成数据丢失。所以推荐只在紧急时使用这个参数。 EWX_POWEROFF: 
    (=8) 
    关闭系统并切断电源,需要ATX电源支持。 以下函数可以取得系统的安全特权:function SetPrivilege(sPrivilegeName : string;bEnabled : boolean ): boolean;
    var
    TPPrev,TP : TTokenPrivileges;
    Token : THandle;
    dwRetLen : DWord;
    begin
      Result := False;
      OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,Token);
      TP.PrivilegeCount := 1;
      if( LookupPrivilegeValue(Nil,PChar( sPrivilegeName ),TP.Privileges[ 0 ].LUID ))then
      begin
        if( bEnabled )then
          TP.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED
        else
          TP.Privileges[ 0 ].Attributes := 0;
        dwRetLen := 0;
        Result := AdjustTokenPrivileges(Token,False,TP,SizeOf( TPPrev ),TPPrev,dwRetLen);
      end;
      CloseHandle( Token );
    end;
    要获得 SE_SHUTDOWN_NAME 的安全特权可调用:
    SetPrivilege( 'SeShutdownPrivilege', True );
      

  3.   

    98下?你的电源设置什么的配置好了么?你用win98本身的关机能正常使用么?
      

  4.   

    就是想编个程序实现重起,关机,注销,睡眠。
    SetSystemPowerState( true, true );//计算机睡眠,可以实现!
    //重新启动计算机
      ExitWindowsEx(EWX_REBOOT,2);
    //关闭计算机
      ExitWindowsEx(EWX_SHUTDOWN and EWX_POWEROFF ,1)
    //注销
    ExitWindowsEx(EWX_LOGOFF,1); 
    以上就是源代码!!
      

  5.   

     ExitWindowsEx(EWX_REBOOT,2);
                  ~~
    错了,应为ExitWindowsEx(Flage, 0);
    第二个参数为“0”,第一个参数为操作的标志。
      

  6.   

    如果你使用了NMUDP控件的话关机函数就不起作用了的。你必须另做处理
    这种情况我也遇到过
      

  7.   

    参数都换成0也不行,也许和我的系统有关。
    EXitWindows怎么用,能代替exitwindowex吗???
      

  8.   

    ExitWindows的功能是注销当前用户。调用方法为:ExitWindows(0,0);