Arrêter ou redémarrer windows

Soyez le premier à donner votre avis sur cette source.

Vue 10 647 fois - Téléchargée 579 fois

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

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
3 juillet 2003

Est-ce que quelqu'un à deja devellopé une appli pour reboot un ensemble de machine sur reseaux ? ( qui marche evidement lol )
je cale sur ce sujet là si quelqu'un pouvait m'aider c'est assez urgent
merci d'avance
Messages postés
51
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
28 octobre 2004

The ExitWindowsEx function either logs off, shuts down, or shuts down and restarts the system.

BOOL ExitWindowsEx( UINT uFlags,
// shutdown operation

DWORD dwReserved
// reserved

);



Parameters
uFlags

Specifies the type of shutdown. This parameter must be some combination of the following values: Value
Meaning

EWX_FORCE
Forces processes to terminate. When this flag is set, Windows does not send the messages WM_QUERYENDSESSION and WM_ENDSESSION to the applications currently running in the system. This can cause the applications to lose data. Therefore, you should only use this flag in an emergency.

EWX_LOGOFF
Shuts down all processes running in the security context of the process that called the ExitWindowsEx function. Then it logs the user off.

EWX_POWEROFF
Shuts down the system and turns off the power. The system must support the power-off feature.

Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section.

Windows 95: Security privileges are not supported or required.

EWX_REBOOT
Shuts down the system and then restarts the system.

Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section.

Windows 95: Security privileges are not supported or required.

EWX_SHUTDOWN
Shuts down the system to a point at which it is safe to turn off the power. All file buffers have been flushed to disk, and all running processes have stopped.

Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section.

Windows 95: Security privileges are not supported or required.



dwReserved

Reserved; this parameter is ignored.

Return Values
If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks
The ExitWindowsEx function returns as soon as it has initiated the shutdown. The shutdown or logoff then proceeds asynchronously.

During a shutdown or log-off operation, applications that are shut down are allowed a specific amount of time to respond to the shutdown request. If the time expires, Windows displays a dialog box that allows the user to forcibly shut down the application, to retry the shutdown, or to cancel the shutdown request. If the EWX_FORCE value is specified, Windows always forces applications to close and does not display the dialog box.

The ExitWindowsEx function sends a separate notification message, CTRL_SHUTDOWN_EVENT or CTRL_LOGOFF_EVENT as the situation warrants, to console processes. A console process routes these messages to its HandlerRoutine functions, which are added and removed by calls to the SetConsoleCtrlHandler function. ExitWindowsEx sends these notification messages asynchronously; thus, an application cannot assume that the console notification messages have been handled when a call to ExitWindowsEx returns.

Windows NT: To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege. For more information about security privileges, see Privileges.

Windows 95: Security privileges are not supported or required.

See Also
AdjustTokenPrivileges, ExitWindows, HandlerRoutine, SetConsoleCtrlHandler

***********************************************************************
Aussi simple que ca !! désolé pour le copier coller mé je dever faire une petite présision .......
Messages postés
4
Date d'inscription
mardi 10 décembre 2002
Statut
Membre
Dernière intervention
10 décembre 2002

La voila cette fonction:

Bool ExitWindowsEx ( UINT uFlags, DWORD dwReserved );

uFlags : variable désignant le type d'opération de fermeture
dwReserved : variable réservée

Rebooter la machine : ExitWindowsEx ( EWX_REBOOT, 0);

Arrêter la machine : ExitWindowsEx ( EWX_SHUTDOWN, 0);

Fermeture de la seesion et se relogger : ExitWindowsEx ( EWX_LOGOFF, 0);
Messages postés
2
Date d'inscription
samedi 12 octobre 2002
Statut
Membre
Dernière intervention
9 octobre 2008

Effectivement, j'ai oublié de dire que ce programme était fait pour Windows 2000.
Messages postés
368
Date d'inscription
mercredi 14 novembre 2001
Statut
Membre
Dernière intervention
1 septembre 2008

tu tournes sous quel OS ?
je serais tenté de dire XP ou un truc du genre ? pkoi ? parce que ce code ci n'est pas valable (ou alors tu te complique pour rien) sous Win98SE !!!!

il suffit d'utiliser "ExitWindowsEx(EWX_POWEROFF,0xFFFF);ou un truc dans le genre. pour une exlication complete => vive msdn.

sinon, il marche effectievement sous les OS nouvelle generation NTFS.

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.