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.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 windows
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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
http://delphi.developpez.com/faq/?pa...StopRunWindows
Sinon ça sert à quoi que Ducros il se décarcasse![]()
Pedro
Aucune réponse aux sollicitations techniques par MP
Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)
Les pages Source C'est bon. Mangez-en!
Le défi Delphi
Règles du forum - FAQ Delphi - Pensez au chtit
Aéroclub Bastia Saint-Exupéry
Partager