Page 1 sur 3

Arrêter l'ordinateur

Publié : mar. 17/févr./2004 18:00
par Le Soldat Inconnu
Salut, j'ai un petit prob avec la fonction ExitWindowsEx_()

voila les paramètres (en anglais)
· uFlags
Specifies the type of shutdown. This parameter must be some combination of the following values:
EWX_FORCE
Forces processes To terminate. When this flag is set, Windows does not send the messages WM_QUERYENDSESSION And WM_ENDSESSION To the applications currently running in the system. This can cause the applications To lose Data. Therefore, you should only use this flag in an emergency.
EWX_LOGOFF
Shuts down all processes running in the security context of the process that called the ExitWindowsEx function. Then it logs the user off.
EWX_POWEROFF
Shuts down the system And turns off the power. The system must support the power-off feature.
Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section.
Windows 95: Security privileges are not supported Or required.
EWX_REBOOT
Shuts down the system And then restarts the system.
Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section.
Windows 95: Security privileges are not supported Or required.
EWX_SHUTDOWN
Shuts down the system To a point at which it is safe To turn off the power. All file buffers have been flushed To disk, And all running processes have stopped.
Windows NT: The calling process must have the SE_SHUTDOWN_NAME privilege. For more information, see the following Remarks section.
Windows 95: Security privileges are not supported Or required.

· dwReserved
Reserved; this parameter is ignored.
j'arrive à déconnecter l'utilisateur

Code : Tout sélectionner

ExitWindowsEx_(#EWX_LOGOFF, 0) ; Déconnecter
mais j'arrive pas à arrêter l'ordinateur, c'est normalement ce code ci mais marche pas :(

Code : Tout sélectionner

ExitWindowsEx_(#EWX_POWEROFF, 0)
j'ai essayé de combiner les flag sans résultat alors un petit cou p de main, ce serai pas de refus

Merci

Publié : mar. 17/févr./2004 18:37
par Chris
Il me semble que cette commande à été modifiée. Sur le sdk de 2003, il y a deux paramètres pour cette fonction.

Chris :)

Publié : mar. 17/févr./2004 19:03
par cederavic
je vois bien 2 parametre la lol et chez moi non plus ça ne fonctionne pas

Publié : mar. 17/févr./2004 19:15
par Chris
Non, il n'y a qu'un paramètre, l'autre est reservé, donc inactif.
· dwReserved
Reserved; this parameter is ignored.
Sur le SDK, il y a deux paramètres à fournir.
BOOL ExitWindowsEx(
UINT uFlags,
DWORD dwReason

dwReason
[in] Reason for initiating the shutdown. This parameter must be one of the system shutdown reason codes.
Chris :)

Publié : mer. 18/févr./2004 8:28
par Le Soldat Inconnu
Et c'est quoi, les "system shutdown reason codes" ?

ça aurait été un string, j'aurai bien mis "ben pour arrêter l'odinateur, c'te question !" mais comme c'est un long, je vois pas :lol:

bon v voir sur la sdk

Publié : mer. 18/févr./2004 8:36
par Chris
Je veux bien te les poster si tu veux, mais les constantes ne sont pas connues de Pure.

Et je n'ai pas le fichier .h pour les valeurs. (Je crois que c'est WinUser.h)

Chris :)

Publié : mer. 18/févr./2004 8:39
par Le Soldat Inconnu
Oui, c'est ce que je viens de voir
il me faudrait la valeur de cette constante :

Code : Tout sélectionner

#SHTDN_REASON_MAJOR_APPLICATION

Publié : mer. 18/févr./2004 8:44
par Le Soldat Inconnu
j'ai trouvé ça :
// Microsoft major reasons.
SHTDN_REASON_MAJOR_OTHER =$00000000;
SHTDN_REASON_MAJOR_NONE =$00000000;
SHTDN_REASON_MAJOR_HARDWARE =$00010000;
SHTDN_REASON_MAJOR_OPERATINGSYSTEM =$00020000;
SHTDN_REASON_MAJOR_SOFTWARE =$00030000;
SHTDN_REASON_MAJOR_APPLICATION =$00040000;
SHTDN_REASON_MAJOR_SYSTEM =$00050000;
SHTDN_REASON_MAJOR_POWER =$00060000;
http://forum.nifty.com/fdelphi/samples/01465.html

Publié : mer. 18/févr./2004 8:51
par Le Soldat Inconnu
marche pas, ouin :(

Publié : mer. 18/févr./2004 12:40
par Oliv

Code : Tout sélectionner

ExitwindowsEx_(1,0)
C'est tout con non ??? :P

Publié : mer. 18/févr./2004 12:44
par Chris
Ben ouais............ Surtout quand ça marche pas!!! :lol:

Chris :)

Publié : mer. 18/févr./2004 13:59
par Oliv
Sa fonctionne sous win 98SE sans problèmes, mais il faut faire un EXE car sa bug avec Fasm

Publié : ven. 20/févr./2004 15:32
par Le Soldat Inconnu
mais ça marche pas sur win2000 et win XP car y des trucs au niveau de la gestion des utilisateurs.

comprends pas. y font comment pour redémarrer l'ordi, les prog d'install ?

y'a aussi un autre fonction pour arrêter l'ordi :
InitiateSystemShutdown_(

dont les paramètres sont :
· lpMachineName
Points to the null-terminated string that specifies the network name of the computer to shut down. If lpMachineName is NULL or points to an empty string, the function shuts down the local computer.

· lpMessage
Points to a null-terminated string that specifies a message to display in the shutdown dialog box. This parameter can be NULL if no message is required.

· dwTimeout
Specifies the time (in seconds) that the dialog box should be displayed. While this dialog box is displayed, the shutdown can be stopped by the AbortSystemShutdown function.
If dwTimeout is not zero, InitiateSystemShutdown displays a dialog box on the specified computer. The dialog box displays the name of the user who called the function, displays the message specified by the lpMessage parameter, and prompts the user to log off. The dialog box beeps when it is created and remains on top of other windows in the system. The dialog box can be moved but not closed. A timer counts down the remaining time before a forced shutdown. If the user logs off, the system shuts down immediately. Otherwise, the computer is shut down when the timer expires.
If dwTimeout is zero, the computer shuts down without displaying the dialog box, and the shutdown cannot be stopped by AbortSystemShutdown.

· bForceAppsClosed
Specifies whether applications with unsaved changes are to be forcibly closed. If this parameter is TRUE, such applications are closed. If this parameter is FALSE, a dialog box is displayed prompting the user to close the applications.

· bRebootAfterShutdown
Specifies whether the computer is to restart immediately after shutting down. If this parameter is TRUE, the computer is to restart. If this parameter is FALSE, the system flushes all caches to disk, clears the screen, and displays a message indicating that it is safe to power down.
mais j'ai pas réussi à la faire marcher également.

Décidement, moi et l'API windows, on ne se somprendra jamais :? :cry:

Publié : ven. 20/févr./2004 16:35
par Anonyme2
comprends pas. y font comment pour redémarrer l'ordi, les prog d'install ?
Salut Régis,

tu as la dos MSDK installé sur ton ordi ? (c'est rien 700/800 Mo)

Moi, oui et suite à ton message j'ai tapé dans la recherche le mot restart et j'ai eu plusieurs réponses dont une qui devrait correspondre au redémarrage lors d'une install (j'ai pas regardé en détail comment faire).

J'ai fait une recherche sur le site MS avec mon résultat et voici l'URL de MS sur cette API

http://msdn.microsoft.com/library/defau ... action.asp

Il faudra que tu bricole dans la base de registre :mrgreen: :mrgreen:
:mrgreen:


Je ne sais pas si ca va t'aider mais bon ...

Publié : ven. 20/févr./2004 20:53
par Lukky
Moi j'utilise ça : "%windir%\System32\shutdown.exe -s -t 0" bon c'est une commande externe mais ça marche.

JL