Je voudrais créer un logiciel de sécurité pour mon PC, seul hic je ne connais pas la commande à réaliser sous Delphi (version 6) qui éteint mon ordinateur. Certain diront que c'est bidon mais c'est surtout l'envie de le faire moi même qui me plait.
Version imprimable
Je voudrais créer un logiciel de sécurité pour mon PC, seul hic je ne connais pas la commande à réaliser sous Delphi (version 6) qui éteint mon ordinateur. Certain diront que c'est bidon mais c'est surtout l'envie de le faire moi même qui me plait.
si j'ai bien compris tu veux un code pour éteindre ton ordinateur : voila tu la met sous un buttonclick :
[Modération]Code:
1
2
3 ExitWindows(EX_RESTARTWINDOWS, 0); //Ferme la session ExitWindows(EX_REBOOTSYSTEM, 0);//Relance l'ordinateur ExitWindows(EX_EWX_shutDown, 0);//Arrête l'ordinateur
Merci d'utiliser les balises code, Laurent Dardenne
[/Modération]
voici un procedure qui permet de fermer ou redémarrer windows en toute sécurité:
mets bReboot a TRUE pour redemarrer et à FALSE pour quitter windowsCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 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;
ou encore appeler l'utilitaire shutdown.ex (fournie en standard avec WindowsXP au moins) avec un shellexec.
pour une liste des paramètres de shutdown, executes le sur la console et n'aies pas peur, shutdown.exe sans paramètres ne ferme pas le pc, mais affiche la syntaxe !
J'ai opté pour:
Avec comme on me l'a conseillé ShellAPI.Code:ShellExecute(handle,PChar('open'),PChar('shutdown.exe'),PChar('-s -c "Ton ordinateur va s''éteindre"'),nil,0);
J'aime bien le petit message et en plus on peut toujours annuler l'estinction c'est pratique au cas où.
Merci à tous
A tout ceci, j'ajouterais :faq:
http://delphi.developpez.com/faq/?pa...StopRunWindows
Sinon ça sert à quoi que Ducros il se décarcasse :mouarf: