Fermer/redemarrer windows xp et autres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 224 fois - Téléchargée 29 fois

Contenu du snippet

Voici une procedure permettant de fermer windows, elle fonctionne avec toutes les version de windows (je ne c pas pour NT et 2000, mais normalement oui)
Dans tous les cas, elle a été faite en premier lieu pour marcher avec XP !

Mettre bReboot a TRUE pour redemarrer sinon FALSE pour quitter

Source / Exemple :


procedure FermerWindows(bReboot: boolean);
var sTokenIn,sTokenOut : TTOKENPRIVILEGES ;
dwLen : DWORD ;
hCurrentProcess,hToken : THANDLE ;
Luid1 : TLargeInteger ;
osVer: OSVERSIONINFO;
begin
try
hCurrentProcess := GetCurrentProcess ;
//ajuste les privilèges, c ce ki est necessaire pour windows XP
OpenProcessToken (hCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken);
LookupPrivilegeValue(nil,'SeShutdownPrivilege',Luid1) ;
sTokenIn.PrivilegeCount := 1;
sTokenIn.Privileges[0].Luid := Luid1;
sTokenIn.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,sTokenIn,sizeof(TTOKENPRIVILEGES),sTokenOut,dwLen);
CloseHandle (hToken);
finally
application.ProcessMessages;
//redemarre
if bReboot then ExitWindowsEx(EWX_REBOOT or EWX_FORCEIFHUNG, 0)
else
begin
//arrêt
osVer.dwOSVersionInfoSize := Sizeof(osVer);
GetVersionEx(osVer);
if osVer.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS //test pour la version de windows (9x ou XP)
then ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCEIFHUNG , 0)
else ExitWindowsEx(EWX_POWEROFF or EWX_FORCEIFHUNG , 0);
end;
end;
end;

Conclusion :


J'ai trouvé cette procedure sur les newsgroup, elle me semble vraiment très utile :)

A voir également

Ajouter un commentaire Commentaires
Messages postés
7
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
8 octobre 2004

euh question bete pour faire fonctionner ca faut mettre quoi ds les uses???
Messages postés
23
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
10 novembre 2013

Sous quelle version de Delphi ? c'est peut-être là la 1re question : personnellement, j'ai la version 3 de Delphi sous Windows XP. Pour l'instant ça ne marche pas. J'essaie d'analyser le code et de comprendre... Si j'arrive à quelque chose de positif je repasserai.
Salut.
Messages postés
136
Date d'inscription
lundi 2 septembre 2002
Statut
Membre
Dernière intervention
15 février 2006

on peut faire plus simple:
utiliser la DLL user.dll qui comporte la fonction ExitWindows
(comme quand on fait "rundll32.exe user,exitwindows")
Messages postés
3
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
26 mars 2002

Ca marche aussi sous NT4
Messages postés
209
Date d'inscription
lundi 11 février 2002
Statut
Membre
Dernière intervention
13 décembre 2002

Et bien sous Windows 2000 Pro... ca marche nikel!
Afficher les 10 commentaires

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.