Page 1 sur 1
[R] Suspendre l'arrêt du système
Posté : dim. 08 juin 2014 14:32
par TheFireman57
Bonjour,
J'ai un programme
important a réaliser et j'ai un problème avec la suspension de l'arrêt du systéme.
J'ai aucune mauvaise intension !!!
Je m'explique je voudrais
détecter l’arrêt du système (même si c'est possible la fermeture de la session) et
après l'avoir détecter l’empêcher j'ai donc ceci :
Code : Tout sélectionner
Func arret()
If($arretOrLoggoff == 4) Then
GUICtrlSetData($log, ">> Demande d'arrêt pour extinction du système")
Run("C:\windows\system32\shutdown.exe -a")
GUICtrlSetData($log, ">> Arrêt pour extinction du système Refusé")
$stop = 1
ElseIf($arretOrLoggoff == 3) Then
GUICtrlSetData($log, ">> Demande d'arrêt pour fermeture session")
Run("C:\windows\system32\shutdown.exe -a")
GUICtrlSetData($log, ">> Arrêt pour fermeture session Refusé")
$fermeture = 1
EndIf
EndFunc
Mais ce n'est pas au point
Merci a vous pour vos futurs réponses

Re: Suspendre l'arrêt du systéme
Posté : dim. 08 juin 2014 14:42
par jguinch
TheFireman57, merci de changer le titre du sujet pour qu'il soit conforme aux
règles de présentation d'un message.
Re: Suspendre l'arrêt du systéme
Posté : dim. 08 juin 2014 14:53
par TheFireman57
Excuser moi je n'avais pas lu ces règles car je suis nouveau sur le forum.
Merci et sinon vous pouvez m'aider ?
Re: [..] Suspendre l'arrêt du système
Posté : dim. 08 juin 2014 15:23
par jguinch
Je pense que tu pourras détecter l'arrêt / fermeture de session, mais l'annuler, c'est pas évident.
Ce que tu peux faire, c'est temporairement bloquer l'arrêt en utilisant
_WinAPI_ShutdownBlockReasonCreate...
Quel est le but du script ?
Et pas la peine de crier, on n'est pas sourds ! (écris plus petit, c'est mieux

)
Edit : regarde l'exemple de la fonction
_WinAPI_SetProcessShutdownParameters
Re: [..] Suspendre l'arrêt du système
Posté : dim. 08 juin 2014 15:56
par TheFireman57
Bonjour,
Merci pour cette réponse et voila mon projet :
http://fr.openclassrooms.com/forum/suje ... e-86229674

Re: [..] Suspendre l'arrêt du système
Posté : dim. 08 juin 2014 23:17
par Tlem
Bonsoir.
Si on fait abstraction de Windows XP, il me semble qu'il est possible d'intervenir à différents stades de l'état d'un PC par le planificateur de tâches.
Re: [..] Suspendre l'arrêt du système
Posté : lun. 09 juin 2014 12:40
par TheFireman57
jguinch merci pour ta réponse cette technique fonctionne parfaitement mais je cherche a afficher ma GUI J'aimerais donc que pendant que la fonction _WinAPI_ShutdownBlockReasonCreate block l'arrêt un autre programme coupe complétement l'arrêt.
J'ai trouvé ça mais peut être que je l'utilise mal :
J'ai trouvé ça aussi :
Et ça :
Help Je ne sais plus quoi faire
Et Tlem peut tu développé ?

Re: [..] Suspendre l'arrêt du système
Posté : lun. 09 juin 2014 13:24
par jguinch
Sous Windows 7, j'ai bien peur qu'on ne puisse pas annuler l'arrêt si facilement...
Pour AbortSystemShutdown, c'est presque ça
Code : Tout sélectionner
Func _AbortSystemShutdown()
$res = DllCall("Advapi32.dll", "int", "AbortSystemShutdown", "str", "localhost")
If IsArray($res) AND $res[0] <> 0 Then Return 1
Return 0
EndFunc
Re: [..] Suspendre l'arrêt du système
Posté : lun. 09 juin 2014 14:59
par TheFireman57
Tu as dit sous Windows 7 mais aurait tu une solution pour Xp ? et merci pour ta patience et ton aide.
Re: [..] Suspendre l'arrêt du système
Posté : mar. 10 juin 2014 11:25
par TheFireman57
Up
C'est pour demain personne n'a la solution ?

Re: [..] Suspendre l'arrêt du système
Posté : mar. 10 juin 2014 21:27
par Tlem
Bonsoir.
Pour XP, il me semble bien que le sujet a déjà été abordé. Une bonne recherche devrait vous donner la solution.
A partir de Windows Vista, vous pouvez utiliser le planificateur de tâches en utilisant comme déclencheur "Si un événement spécifique est enregistré".
Là il vous faudra choisir le bon Journal d'événement et l'événement lié à l’arrêt du système ...
Pour finir, en théorie (j'ai pas essayé) avec la simple ligne de commande "Shutdown.exe /a" le système ne devrait pas continuer son arrêt. Mais là c'est théorique.
D'après un test que je viens de faire, pour un redémarrage du PC, c'est le journal "Système", source "USER32" et ID événement "1074".
On peux aussi récupérer toujours dans le journal "Système", la source "WinLogon", et l'ID "7002" (Fermeture session).
Re: [..] Suspendre l'arrêt du système
Posté : mar. 10 juin 2014 22:47
par jguinch
J'espère que c'est pas trop tard
J'ai pas de XP sous la main, mais ça devrait fonctionner avec ça :
► Afficher le texte
Code : Tout sélectionner
#include <WindowsConstants.au3>
Global $shutdown = False
Global $g_hForm = GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()'), 200, 200)
GUIRegisterMsg($WM_QUERYENDSESSION, 'WM_QUERYENDSESSION')
While 1
If $shutdown Then
MsgBox(48, "Arrêt impossible", "Vous ne pouvez pas arrêter l'ordinateur !")
$shutdown = False
EndIf
Sleep(10)
WEnd
Func WM_QUERYENDSESSION($hWnd, $iMsg, $wParam, $lParam)
_AbortSystemShutdown()
$shutdown = True
Return False
EndFunc
Func _AbortSystemShutdown()
$res = DllCall("Advapi32.dll", "int", "AbortSystemShutdown", "str", "localhost")
If IsArray($res) AND $res[0] <> 0 Then Return 1
Return 0
EndFunc
Pour le lancement automatique, tourne-toi vers les fonctionnalités
Autorun(même si c'est plus très à la mode et bien souvent verrouillé)
Re: [..] Suspendre l'arrêt du système
Posté : mer. 11 juin 2014 00:19
par TheFireman57
Merci vous me sauver la vie et j'ai créer un conteneur car l' autorun.inf est verrouiller.

je vous tiens au courant de ma note

Re: [..] Suspendre l'arrêt du système
Posté : mer. 11 juin 2014 20:27
par TheFireman57
Et ben merci !
Je tiens tout d'abord a remercier mon prof de CIT pour m'avoir fait passer que des bons moments sur ce thème et de m'avoir mis un 18
Merci pour le code de suspension de l'arrêt du système qui fonctionne parfaitement le seul qui fonctionne d'ailleurs.

Re: [..] Suspendre l'arrêt du système
Posté : mer. 11 juin 2014 20:31
par TommyDDR
Ça fait un peu "je vous ai utilisé, je n'en n'ai plus besoin" ^^'
Re: [..] Suspendre l'arrêt du système
Posté : mer. 11 juin 2014 20:46
par jguinch
Ouais c'est un peu ça on dirait...
Bref, ça servira surement à quelqu'un d'autre (avis à ceux qui sont sous XP...)

Re: [..] Suspendre l'arrêt du système
Posté : mer. 11 juin 2014 21:15
par TheFireman57
Excusez moi si vous l'avais pris comme sa mais ce n'était dans mes intentions vous savez j'ai lus d'autres sujets du même type sur ce site et je n'ai pas trouver mon bonheur mais grâce à mon poste oui , donc je tenais juste a vous remercier.

Re: [..] Suspendre l'arrêt du système
Posté : mer. 11 juin 2014 21:17
par jguinch
Pas de souci TheFireman57
Pense à passer tu sujet en [R] si c'est OK...
Re: [R] Suspendre l'arrêt du système
Posté : mer. 11 juin 2014 21:19
par TheFireman57
Et puis dans mes projet futur, je finirais par revenir sur cette page.
