如何在delphi中用语言实现控制计算机重启?
谢谢大家

解决方案 »

  1.   

    关机:ExitWindowsEx(EWX_SHUTDOWN and EWX_POWEROFF ,1);
    重启:ExitWindowsEx(EWX_REBOOT,2)
      

  2.   

    //说明: 我就是在ExitWindowsEx外面在包裹了一层,使它支持98,2000了
    //作者: zsy_good
    //时间: 2002-12-16
    //使用
    ExitWindowsExEx(EWX_FORCE + EWX_SHUTDOWN + EWX_POWEROFF, 0);
    ExitWindowsExEx(EWX_REBOOT, 0);procedure ExitWindowsExEx(uFalgs: UINT;dwReserved :DWORD);
    const
      SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
    var
      VerInfo: TOSVersionInfo;
      hToken: THandle;
      tp:    TTokenPrivileges;
      iRlen: Cardinal;
    begin
      VerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
      GetVersionEx(VerInfo);
      if VerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then //如果是WinNT
      begin
        OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
            hToken);
        LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid);
        tp.PrivilegeCount := 1;
        tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
        AdjustTokenPrivileges(hToken, FALSE, tp, 0, nil, iRlen);
      end;
      ExitWindowsEx(uFalgs,dwReserved);
    end;