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.
Je tourne en rond ... même dans les lignes droites !!!
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
Je tourne en rond ... même dans les lignes droites !!!
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager