[R] Execution script au Shutdown sous Seven/Vista

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ferrierd
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 20 avr. 2011 10:27
Status : Hors ligne

[R] Execution script au Shutdown sous Seven/Vista

#1

Message par ferrierd »

Bonjour,

Je cherche à exécuter un script lors du shutdown de la machine.
Je sais que ce thème a été abordé maintes fois.
J'ai déjà exploré plusieurs pistes (console gpedit.msc, Fonction OnAutoitExitRegister,...)

Je suis arrivé au code suivant qui m'est pleinement fonctionnel
► Afficher le texte
Si une demande de shutdown est faite, alors celle-ci est désactivée.
Ce qui me permet donc de pouvoir exécuter mon script et de Shutdown le Pc après.

Le seul souci actuellement c'est que cela ne fonctionne pas sur un Vista ou un Seven.

Sur le forum Anglais j'ai trouvé l'utilisation des fonctions

Code : Tout sélectionner

Func _ShutdownBlockReasonCreate($Hwnd, $wStr)
    ; http://msdn.microsoft.com/en-us/library/ms...28VS.85%29.aspx
    ; Prog@ndy
    Local $aResult = DllCall("User32.dll", "int", "ShutdownBlockReasonCreate", "hwnd", $Hwnd, "wstr", $wStr)
    If @error Then Return SetError(1,0,0)
    Return $aResult[0]
EndFunc

Func _ShutdownBlockReasonDestroy($Hwnd)
    Local $aResult = DllCall("User32.dll", "int", "ShutdownBlockReasonDestroy", "hwnd", $Hwnd)
    If @error Then Return SetError(1,0,0)
    Return $aResult[0]
EndFunc
Mais cela redonne la main à l'utilisateur.
Je souhaite pour ma part avoir le même focntionnement que sous un Xp, c'est à dire differer la demande de shutdown, pour pouvoir lancer un script de sauvegarde, et reprendre le Shutdown de manière transparente pour l'utilisateur.

Si vous avez une expérience dans ce domaine...
Par avance Merci
Modifié en dernier par ferrierd le dim. 01 mai 2011 09:31, modifié 1 fois.
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Execution script au Shutdown sous Seven/Vista

#2

Message par ZDS »

Hello!

Si tu vois que le shutdown a été interrompu, il te suffit de relancer le shutdown toi même, non?

Use case que je pense avoir saisi :
- Tu lances ton script et ton install
- Le script boucle tranquillement
- Un arrêt de l'ordi est demandé (peux tu détecter si c'est un arrêt, une mise en veille ou un redémarrage?)
- Ton script l'intercepte et le met en attente
- L'install continue
[... Pendant ce temps, à Vera Cruz]
- L'install se finit
- Ton script reprend la main et relance l'extinction <== C'est là que ça plante?
- Windows s'autodétruit dans un final à la "Portal 2" et de magnifiques effets spéciaux dignes de "Plan 9 from Outer Space"
- Le héros embrasse la princesse
Fin :)

Dans ce cas, sur la fin du script (après ta boucle While), fais un sleep de 5 secondes, et force toi même l'extinction avec la commande Shutdown (code [, reason]), si une demande d'extinction était demandée pendant l'exécution. (code : 0=déconnexion, 1=arrêt, 2=redémarrage).

C'est une façon de shunter le problème, même si ça ne donne aucune réponse à ton souci premier, pourquoi Vista et Seven se vautrent comme des loutres bourrées dans le brouillard? (y a pas un pléonasme là dedans? ^^). Plus sérieusement, je pense que ça vient de l'UAC, essaye avec un #RequireAdmin au pire (même si ça règle quasiment jamais les problèmes).

A bientôt !
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
ferrierd
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 20 avr. 2011 10:27
Status : Hors ligne

Re: [..] Execution script au Shutdown sous Seven/Vista

#3

Message par ferrierd »

Bonjour à tous,

Ca pourrait être ca ZDS ;-)

Entre temps j'ai posé la même question sur le forum anglais.
Je vous livre une réponse (pas encore testé)
► Afficher le texte
Et un Second exemple:
► Afficher le texte
Piloupilou
Niveau 2
Niveau 2
Messages : 27
Enregistré le : sam. 26 févr. 2011 13:42
Status : Hors ligne

Re: [R] Execution script au Shutdown sous Seven/Vista

#4

Message par Piloupilou »

Bonsoir, petite question, j'ai un peu lu le code mais trop compris encore grandchose

Mais : quelle est la fonction qui detecte le shutdown ? et comment ca marche en gros ?

Est ce qu'il y en de la meme maniere qui peuvent detecter d'autres evenements, comme des processus qui se lancent par exemple ?
ferrierd
Niveau 2
Niveau 2
Messages : 27
Enregistré le : mer. 20 avr. 2011 10:27
Status : Hors ligne

Re: [R] Execution script au Shutdown sous Seven/Vista

#5

Message par ferrierd »

Bonjour,

Je ne suis pas un spécialiste de la question.
Mais pour autant et d'après ce que j'ai pu comprendre à la fermeture de l'OS, Windows envoie une requête (WM_QUERYENDSESSION) à tous les programmes actifs, demandant de se fermer de manière propre.

Le script intercepte cette requete et annule la demande de fermeture de Windows, le temps d'executer son propre script.
Répondre