; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2328&highlight= ; Author: dige ; Date: 18. September 2003 ; Erklärung: ; Wenn Windows vom Nutzer heruntergefahren wird oder der Nutzer sich ; abmeldet und dies nicht mit der Option FORCE geschieht, wird an alle ; laufenden Prozesse eine #WM_QUERYENDSESSION Message gesendet. ; ; Diese ist mit #True oder #False zu beantworten. Wird allerdings ein ; #False übergeben, wird der Shutdown Prozess komplett abgebrochen! ; ; Dies kann man verwenden um ein Programm rechtzeitig sauber zu beenden ; oder den Shutdown Prozess abzufangen... Procedure.b TerminateProgram() Shared Quit.b ; Wird bei Windows-Shutdown aufgerufen If MessageRequester( "Windows Shutdown", "Windows wirklich beenden?", #MB_ICONEXCLAMATION | #MB_YESNO ) = 6 Quit.b = 1 ProcedureReturn #True Else ProcedureReturn #False EndIf EndProcedure Procedure WindowsCallback(WindowID, Message, wParam, lParam) If Message = #WM_QUERYENDSESSION ProcedureReturn TerminateProgram() Else ProcedureReturn #PB_ProcessPureBasicEvents EndIf EndProcedure OpenWindow( 0,90,90,300,100,#PB_Window_SystemMenu, "Warte auf Windows Shutdown" ) SetWindowCallback(@WindowsCallback()) Repeat Event = WindowEvent() Delay ( 100 ) Until Quit.b Or Event = #PB_EventCloseWindow ; ExecutableFormat=Windows ; FirstLine=1 ; EOF