Bonjour
Je cherche le moyen de savoir comment faire pour qu'un programme détecte l'extinction de windows.
J'ai cherché mais j'ai pas trouvé de source ni de piste pour le faire.
Si quelqu'un sait comment faire, sa m'interesse.
Merci d'avance
Arret de windows
En adaptant ce code de Nico par exemple (qu'une courte recherche permet de trouver):
Code : Tout sélectionner
;Attention, ce code va nécessairement fermer vos applications en cours
;même si vous choisissez d'annuler la fermeture de la session ou de Window
;A noter que vous n'avez que quelques secondes pour agir et annuler l'opération.
;Donc cliquez sur NON dès l'affichage de la Boite de Dialogue!
;Il faut lancer ce code puis lancer une fermeture de Window ou un arrêt de window
;une boite de dialogue vous permettra d'annuler cette opération mais il faudra répondre
;au plus vite à l'affichage de cette boite!
;Nico
;Le 15/11/04
;PureBasic 3.92
;Ce code permet de savoir si Window ferme la session en cours ou
;si l'ordinateur va s'éteindre et de prendre des mesures.
#ENDSESSION_LOGOFF = $80000000
Procedure ProcedureCallback(WindowID, Message, wParam, lParam)
Resultat = #PB_ProcessPureBasicEvents
Select Message
Case #WM_QUERYENDSESSION
Debug "ok"
;If lParam = 0 : End ; Fermeture de Windows
;ElseIf lParam | #ENDSESSION_LOGOFF : End ; Fermeture de la session
;EndIf
EndSelect
ProcedureReturn Resultat
EndProcedure
Enumeration
#Window
EndEnumeration
If OpenWindow(#Window,0,0,400,400,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Pure Basic")
SetWindowCallback(@ProcedureCallback())
Repeat
EventID.l=WaitWindowEvent()
Select EventID
Case #WM_CLOSE
Quit=1
EndSelect
Until Quit=1
EndIf
Ta question n'est pas bête du tout, il faut bien s'interresser aux sessions windows un jours ou l'autre pour finioler nos petits programmes ^^.
Je viens de tester le code sous XP et il fonctionne très bien.
Pour tester "changer d'utilisateur", je te renvois à ce rapport de bug que j'ai posté il y a quelque temps :

Le code est simple, il faut juste comprendre le fonctionnement des fonctions de l'api (se sont juste des fonctions en plus) et des callback (il y a de bons exemples sur ce forum et sur 2dev). Les constantes comme #WM_QUERYENDSESSION ne sont en fait que le résultat de messages fournits par windows (en tout cas c'est ce que j'ai compris en bon amateur).
Je viens de tester le code sous XP et il fonctionne très bien.
Pour tester "changer d'utilisateur", je te renvois à ce rapport de bug que j'ai posté il y a quelque temps :
Malheureusement personne ne veux y répondre, tu vas devoir faire comme moi et le surveiller tous les jours jusqu'a ce que Fred ou une ame généreuse décide de répondre

Le code est simple, il faut juste comprendre le fonctionnement des fonctions de l'api (se sont juste des fonctions en plus) et des callback (il y a de bons exemples sur ce forum et sur 2dev). Les constantes comme #WM_QUERYENDSESSION ne sont en fait que le résultat de messages fournits par windows (en tout cas c'est ce que j'ai compris en bon amateur).