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 12
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
Rejoignez-nous