Arrêt automaitque de windows

hlegenie Messages postés 21 Date d'inscription mardi 27 août 2013 Statut Membre Dernière intervention 7 juillet 2018 - 2 avril 2014 à 10:51
hlegenie Messages postés 21 Date d'inscription mardi 27 août 2013 Statut Membre Dernière intervention 7 juillet 2018 - 7 avril 2014 à 08:01
Bonjour,
Pouvez-vous me donner des codes delphi qui permettent l'arrêt automatique de windows (sans demande de confirmation) ?

2 réponses

Whismeril Messages postés 19089 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 13 juillet 2024 658
2 avril 2014 à 11:53
Bonjour,
Merci de garder à l'esprit que CodeS-SourceS est une communauté d'entraide. Toutes les réponses sur le forum sont assurées par des bénévoles qui donnent de leur temps libre pour aider à résoudre les problèmes.

A noter également que nous ne faisons pas dans le "tout cuit". Soit tu trouves ton bonheur dans la partie source du site, soit à l'aide de ton moteur de recherche favori. Ici, nous aidons volontiers sur des sujets techniques précis.

ici et des conseils d'écriture des messages.

ici comment utiliser la coloration syntaxique.

Et enfin, le plus important




Merci donc de reformuler ta demande en respectant ces quelques points.
hlegenie Messages postés 21 Date d'inscription mardi 27 août 2013 Statut Membre Dernière intervention 7 juillet 2018
2 avril 2014 à 12:18
Merci Whismeril pour ces conseils. Je remercie aussi ceux qui vont m'aider à résoudre ce problème.
0
drexl Messages postés 56 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 22 juillet 2014
4 avril 2014 à 10:07
Bonjour,
J'ai fait la même recherche il y a peu et j'ai trouve ceci :
http://delphi.developpez.com/faq/?page=systemedivers#StopRunWindows

et en faisant une très légère modification pour l'utiliser comme je voulais


Function ArretSystem(uFlags: UINT): Boolean;
Var
Token: THandle;
TokenPrivilege: TTokenPrivileges;
Outlen : Cardinal;
Error:Dword;

Const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';

Begin
Result:=False;
// Récupère les informations de sécurité pour ce process.
if not OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, Token)
then Exit;
try

FillChar(TokenPrivilege, SizeOf(TokenPrivilege),0);
// Valeur de retour
Outlen := 0;
// Un seul privilége à positionner
TokenPrivilege.PrivilegeCount := 1;

// Récupère le LUID pour le privilége 'shutdown'.
// un Locally Unique IDentifier est une valeur générée unique jusqu'a ce
// que le système soit redémarré
LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TokenPrivilege.Privileges[0].Luid);

// Positionne le privilége shutdown pour ce process.
TokenPrivilege.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(Token, False, TokenPrivilege, SizeOf(TokenPrivilege),nil, OutLen);

Error:=GetLastError;
If Error <> ERROR_SUCCESS
then Exit;

// Arrête le système
if ExitWindowsEx(uFlags, 0)=False
then Exit;
Result:=True;

finally
CloseHandle(Token);
end;
end;


après :
éteint le PC
ArretSystem(EWX_SHUTDOWN + EWX_FORCEIFHUNG);
redémarre le PC
ArretSystem(EWX_REBOOT + EWX_FORCEIFHUNG);

(testé sous XP)
--
hlegenie Messages postés 21 Date d'inscription mardi 27 août 2013 Statut Membre Dernière intervention 7 juillet 2018
7 avril 2014 à 08:01
Bonjour,
Merci pour votre réponse drexl :) Je vais les essayer.
0
Rejoignez-nous