Page 1 sur 1

[..] Instructions avant extinction/fermeture de session

Posté : jeu. 20 juin 2013 14:33
par leoleolth
Bonjour,
Comment peut-on effectuer une instruction (envoyer un mail dans mon cas) juste avant la fermeture d'une session ou l'extinction de l'ordinateur ?

Re: [..] instructions avant extinction/fermeture de session

Posté : jeu. 20 juin 2013 17:08
par TopXm
Hello :)

Via l'éditeur de stratégie (GpEdit.msc)

=> Param Windows
=> Script (Démarrage / Arret)
► Afficher le texteCapture GPEDIT

Re: [..] instructions avant extinction/fermeture de session

Posté : jeu. 20 juin 2013 17:43
par leoleolth
merci, mais est-il possible de faire tout ça dans le script ?

Re: [..] instructions avant extinction/fermeture de session

Posté : jeu. 20 juin 2013 18:04
par sylvanie
Bonjour
En bricolant à partir de ce post :
https://www.autoitscript.fr/forum/viewt ... ion#p47496

et en exploitant donc l'udf ci présente en PJ, j' ai ici une fenêtre qui s'enregistre à l'évènement de fermeture de session et qui écrit dans un fichier sur le bureau pendant 10 secondes (histoire de bien tester l'attente pendant la déconnexion), et ne rend la main à Windows quand le travail est fini :
► Afficher le texte

Je n'ai pas tester pour le cas du reboot. Si ça ne le fait pas, c'est à creuser ...
Après dans votre cas, rendez cette fenêtre invisible et le tour est joué

Re: [..] Instructions avant extinction/fermeture de session

Posté : ven. 21 juin 2013 15:14
par leoleolth
Merci.
Si dans ma boucle principale je mets une condition qui renvoie à une fonction que j'ai créé quand l'ordi s'éteint, comment dois-je faire ?

Ex:

Code : Tout sélectionner

While 1

If <l'ordi s'eteint ou la session se ferme> Then
_MaFonction()
EndIf

WEnd

Re: [..] Instructions avant extinction/fermeture de session

Posté : lun. 24 juin 2013 14:19
par sylvanie
Bonjour,
La philosophie de l'enregistrement à l'évènement de fermeture n'est pas exactement à considérer comme tel.
Il s'agit plutôt de "On veux me fermer alors je déclenche ceci".
Dans votre script , mettez

Code : Tout sélectionner

GUIRegisterMsg(0x0011, 'WM_QUERYENDSESSION')
_WinAPI_SetProcessShutdownParameters(0x03FF)
_WinAPI_ShutdownBlockReasonCreate($hForm, 'This application is blocking system shutdown because the saving critical data is in progress.')
 
après le GUISetState(). Si votre application n'est pas fenêtrée, alors créez une GUI invisible durant le moment où votre script attend la fermeture de session.


puis déclarez la fonction

Code : Tout sélectionner

Func WM_QUERYENDSESSION($hWnd, $Msg, $wParam, $lParam)
    Switch $hWnd
        Case $hForm
             APPEL_A_VOTRE_FONCTION_DE_FIN
             _WinAPI_ShutdownBlockReasonDestroy($hForm)
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_QUERYENDSESSION
 
où vous constatez l'appel à "APPEL_A_VOTRE_FONCTION_DE_FIN"