Bonjour
Comment faire pour eteindre le PC (sans la confirmation).
Bonjour
Comment faire pour eteindre le PC (sans la confirmation).
Avec la fonction API :
**option** peut prendre les valeurs EWX_SHUTDOWN, EWX_REBOOT, .... et ds ton cas je crois EWX_FORCE
Code : Sélectionner tout - Visualiser dans une fenêtre à part ExitWindowsEx(**option**, 0)
Cette méthode ne marche que pour windows 9x, pour NT c'est un peu + compliqué
Je vous recopie tel quel un message posté par mes soins il y a quelques temps sur un autre forum
La question était: comment appeler la boîte de fermeture de Windows?
Il y a plusieurs solutions à ce problème. Aucune n'est vraiment
complètement satisfaisante, mais on peut quand même faire
quelque chose...
La plus simple est d'utiliser un objet Shell et d'appeler la procédure
ShutDownWindows. Je pense que cet objet n'est disponible que dans les
versions de windows ayant Internet Explorer 4 au minimum (mais je n'en
suis pas sûr, à vérifier).
Cette méthode permet d'appeler le dialogue habituel de Windows.
Une autre technique est de créer un dialogue qui ressemble à celui de
Windows et d'appeler la fonction ExitWindowsEx. Celle-ci permet
d'arrêter le système sans passer par le dialogue habituel de Windows
(avec quelques restrictions sous NT).
Une dernière méthode (à ma connaissance) consiste à passer par les
méthodes InitiateSystemShutdown et ses copines, mais je pense que
cela dépasse les besoins dont nous parlons.
A mon avis le meilleur moyen est d'utiliser les 2 premières techniques
conjointement. C'est à dire de faire une fonction qui tente d'utiliser
le shell, et qui si ça ne marche pas utilise la deuxième technique (qui
elle doit toujours fonctionner).
Comme un petit peu de code en dit toujours plus qu'un long discours:
(* Attention, ce code n'a pas été vérifié! *)
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 unit Unit2; interface uses Windows; type (* Traduction rapide du SDK Windows (voir aide sur ExitWindowsEx pour plus d'infos) EWX_FORCE : force tous les processus à s'arrêter. Les applications ne reçoivent pas les messages WM_QUERYENDSESSION et WM_ENDSESSION. Cela peut causer une perte de données dans les applications en cours. Ce flag ne doit être utilisé qu'en cas d'urgence. EWX_LOGOFF : Termine tous les processus s'exécutant dans le contexte de sécurité du processus appelant la fonction ExitWondowsEx. Déconnecte ensuite l'utilisateur. EWX_POWEROFF : Arrête le système et coupe l'alimentation. Le système doit être capable de couper son alimentation par logiciel. Attention, sous Windows NT (2000, XP) le process courant doit avoir le privilège SE_SHUTDOWN_NAME. EWX_REBOOT : Arrête et redémarre le système. Même remarque que pour EWX_POWEROFF. EWX_SHUTDOWN : Arrête le système jusqu'au point où il est sans danger de couper l'alimentation. Tous les buffers de fichiers ont été vidés sur disque et tous les processus ont été stoppés. Même remarque que pour EWX_POWEROFF. *) TExitWindowsMode = (ewmForce, ewmLogOff, ewmPowerOff, ewmReboot, ewmShutdown); TExitWindowsModes = set of TExitWindowsMode; procedure ShutDownDialog; function ShutDown(Modes: TExitWindowsModes): boolean; implementation uses comobj; procedure ShutDownDialog; var ShellObject: variant; begin ShellObject:= CreateOleObject('Shell.Application'); ShellObject.ShutdownWindows; end; function ShutDown(Modes: TExitWindowsModes): boolean; const // La définition d'un tableau permet de s'affranchir des éventuelles modifications // des valeurs de l'API WindowsFlags : array[TExitWindowsMode] of UINT = ( EWX_FORCE, EWX_LOGOFF, EWX_POWEROFF, EWX_REBOOT, EWX_SHUTDOWN); var flags: UINT; reserved: DWORD; i: TExitWindowsMode; begin flags:= EWX_LOGOFF; // = 0 reserved:= 0; for i:= Low(TExitWindowsMode) to High(TExitWindowsMode) do if i in Modes then flags:= flags or WindowsFlags[i]; result:= ExitWindowsEx(flags, reserved); end;
Bonsoir,
On peut aussi utiliser des composants spécifiques qui remplissent cette fonction d'arrêt.
Va sur http://www.torry.net est fait une recherche avec shutdown
@+
Ubuntu 18.04 LTS
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