Arrêter ou redémarrer windows

Description

Une fonction pour arrêter Windows (ou redémarrer) en C++Builder 5
Le paramètre indique s'il faut redémarrer (TRUE) ou arrêter (FALSE)

Source / Exemple :


void __fastcall TFrmMain::mvCloseWindows(bool pReboot)
{
TOKEN_PRIVILEGES wTokenIn, wTokenOut;
DWORD wLength;
HANDLE wCurrentProcess, wToken;
_LUID wLuid;
OSVERSIONINFO wOsVer;
try
  {
  wCurrentProcess = GetCurrentProcess();
  OpenProcessToken(wCurrentProcess, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &wToken);
  LookupPrivilegeValue(NULL, "SeShutdownPrivilege", &wLuid);
  wTokenIn.PrivilegeCount = 1;
  wTokenIn.Privileges[0].Luid = wLuid;
  wTokenIn.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
  AdjustTokenPrivileges(wToken, FALSE, &wTokenIn, sizeof(TOKEN_PRIVILEGES), &wTokenOut,&wLength);
  CloseHandle(wToken);
  }
__finally
  {
  Application->ProcessMessages();
  if (pReboot)
    ExitWindowsEx(EWX_REBOOT | EWX_FORCEIFHUNG, 0);
    else
      {
      wOsVer.dwOSVersionInfoSize = sizeof(wOsVer);
      GetVersionEx(&wOsVer);
      if (wOsVer.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
        ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCEIFHUNG, 0);
        else
          ExitWindowsEx(EWX_POWEROFF | EWX_FORCEIFHUNG, 0);
      }
  }
}

Conclusion :


On peut utiliser ce code pour arrêter la machine à une certaine heure (on peut écouter des mp3 pour s'endormir, etc...)
Dans quelques temps, un exécutable sera disponible sur mon site perso :
http://perso.club-internet.fr/vidal_michel

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.