Redémarer l'ordinateur

Résolu
pseudoOM
Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009
- 3 mars 2005 à 11:38
cs_Gerard
Messages postés
121
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
7 août 2018
- 24 mars 2009 à 07:53
Bonjour,
y a-t-il une fonction en delphi6 qui permet de redémarer l'ordinateur quad on quitte le programme ?
Merci pour vos réponse !

pseudoOM

4 réponses

ni69
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
3 mars 2005 à 12:13
regarde ici :
http://phidels.com/php/index.php3?page=../php/pagetelechargementzip.php3&id=63


@+
Bonne Prog'
Nico



<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
3
jinh68
Messages postés
215
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
1 septembre 2006

3 mars 2005 à 13:17
En sachant qu'à partir de Windows 2000, il faut ajuster les TOKEN privileges au préalable...

j!nH
0
krypto2000
Messages postés
23
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
3 mars 2005

3 mars 2005 à 16:18
Voilà une solution :

déclarations globales :

var
Form1: TForm1;
hToken: THandle;
tkp, tkp_prev: TTokenPrivileges;
PrivilName: PChar;
ReturnLength:Cardinal;
xTime:integer=3600;
OsCur:String='';
st:string;

implementation

procedure TForm1.EnablePrivileges;
begin
if not OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
raise Exception.Create('OpenProcessToken failed.');
PrivilName := 'SeShutdownPrivilege';
if not LookupPrivilegeValue(Nil, PrivilName, tkp.Privileges[0].Luid) then
raise Exception.Create('No rights to continue');
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, False, tkp, SizeOf(TTokenPrivileges), tkp_prev, ReturnLength);
if GetLastError <> ERROR_SUCCESS then
raise Exception.Create('AdjustTokenPrivileges enable failed.');
end;


procedure TForm1.DisablePrivileges;
begin
tkp.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, False, tkp, SizeOf(TTokenPrivileges), tkp_prev, ReturnLength);
if GetLastError <> ERROR_SUCCESS then
raise Exception.Create('AdjustTokenPrivileges disable failed.');
end;


procedure TForm1.shutDown();
begin
if OsCur='95' then
ExitWindowsEx(EWX_SHUTDOWN+EWX_FORCE,0)
else
begin
EnablePrivileges;
if not InitiateSystemShutdown(Nil,'Save your documents right away, system is about to shutdown',5,True,False) then
raise Exception.Create('InitiateSystemShutdown failed.');
DisablePrivileges;
end;
end;

Voilà

Ensuite il faut changer EWX_SHUTDOWN en EWX_REBOOT,
appeler la procedure dans l'évenenemnt Form1.onClose() et la tour est joué !
0
cs_Gerard
Messages postés
121
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
7 août 2018

24 mars 2009 à 07:53
Précision:
je pense que changer EWX_SHUTDOWN en EWX_REBOOT ne marche que pour les anciens OS (95?) maintenant il faut mettre true comme dernier paramètre dans le InitiateSystemShutdown
0