我用的是Realproducer控件。我想用一个checkbox组件控制它,等它压缩完成时关机,我试了好几次,请各位指点。最好能帮我写一下源码!!谢谢!!

解决方案 »

  1.   

    case rgExitOptions.ItemIndex of
        0: Win32Check(ExitWindows(0, 0)); // Exit and log on as a
                                          // different user.
        1: Win32Check(ExitWindowsEx(EWX_REBOOT, 0));  // Exit/Reboot
        2: Win32Check(ExitWindowsEx(EWX_SHUTDOWN, 0));// Exit to Power Off
        // Exit/Log off/Log on as different user
        3: Win32Check(ExitWindowsEx(EWX_LOGOFF, 0));
      end;
      

  2.   

    我试过了,可是不能用EXITWINDOWSEX,只能用EXITWINDOWS(EWS_WINDOWS,0),而且它只是能重启,并不能关机!!
    应该怎么做呀?!
      

  3.   

    要SHUNTDOWN用EXITWINDOSEX。
    2000,和98的EXITWINDOWS及EXITWINDOSEX笑果有此不一样。看看MSDN吧。
     msdn.microsoft.com
      

  4.   

    ExitWindowsEx(EWX_FORCE + EWX_SHUTDOWN + EWX_POWEROFF, 0);
    如果是NT内核(NT,2000,XP)需要先获得权限!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_FORCE + EWX_SHUTDOWN + EWX_POWEROFF, 0);
    end;关于各API的作用,查询MSDN
      

  5.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/shutting_down.aspMS提供的例子
      

  6.   

    ExitWindowsEx(EWX_FORCE + EWX_SHUTDOWN + EWX_POWEROFF, 0);
      

  7.   

    还有,在windows和win32中关机函数不一样