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
If lParam = 0 ;Window se ferme
result=MessageRequester("Info","Window est en cours d'arrêt, l'autoriser?",#PB_MessageRequester_YesNo )
ElseIf lParam | #ENDSESSION_LOGOFF ;Fin de session
result= MessageRequester("Info","Window va fermer cette Session, l'autoriser?",#PB_MessageRequester_YesNo )
EndIf
If result=6 ;Autorisation de Fermeture
;Si vous voulez faire une sauvegarde des données avant la fermeture
;la faire maintenant
ProcedureReturn #True
ElseIf result=7 ;Annulation de Fermeture
ProcedureReturn #False
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