Windows-Ende abfangen



'Windows-Ende abfangen

Beitrag, 15.07.2007 21:20: ;createCode() 'Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt: 'Windows-Ende abfangen '############################# 'Test-Programm für : 'XProfan '############################# 'Author : Andreas Miethe 'August 2003 '############################# 'Thema : Windows-Ende abfangen '############################# $H windows.ph $H messages.ph DEF HiWord(1) And(&(1)>>16,$FFFF) DEF LoWord(1) And(&(1),$FFFF) Declare Ende&,Button&,OldWindowProc& Proc Speicher_Routine Declare X& 'Statt einer Speicher-Routine läuft hier nur ein Zähler durch ~TextOut(%hDC,0,0,"Speicher-Dummy :",16) Whilenot X& > 20000 Locate 2,0 Print X& Inc X& EndWhile ~TextOut(%hDC,0,100,"fertig mit Speichern :",22) ~TextOut(%hDC,0,150,"Taste.... :",11) Waitinput EndProc Proc Frage_Speichern  If Messagebox("Erstmal alle Daten speichern ?","Windows_Ende?",36) = 7      return 1 'Windows wird sofort beendet  Else       'bevor 1 zurückgegeben wird kann hier eine Speicher-Routine       'eingebaut werden. Windows wird erst beendet wenn alles erledigt ist.      Speicher_Routine      return 1 'Windows wird nach dem Speichern beendet      'return 0 'Windows nicht beendet  Endif EndProc Proc WindowProc   Parameters Wnd&, Msg&, wParam&, lParam&    If Msg& = ~WM_COMMAND      If lParam& = Button& 'Control abfragen         If HiWord(wParam&) = ~BN_CLICKED'Klick auf Button            SendMessage(Wnd&,~WM_CLOSE,0,0)         Endif      Endif   Endif    If Msg& = ~WM_CLOSE      Speicher_Routine      ~PostQuitMessage(0)'Programm-Ende   Endif    If Msg& = ~WM_QUERYENDSESSION      Return Frage_Speichern()   Endif    'alle Messages die nicht behandelt wurden an die Original-Prozedur weiterleiten   return ~CallWindowProc(OldWindowProc&,Wnd&, Msg&, WParam&, LParam&) EndProc set("FastMode",1) SetTrueColor 1 WindowStyle 31 Window 0,0-640,480 CLS ~GetSysColor(~COLOR_BTNFACE) Button& = CreateButton(%hwnd,"Ende",10,50,80,24) Sendmessage(Button&,~WM_SETFONT,~GetStockObject(~DEFAULT_GUI_FONT),1) 'Window-Prozedur austauschen und die Original-Prozedur in 'OldWindowproc sichern OldWindowProc& = ~SetWindowLong(%hwnd,~GWL_WNDPROC, ProcAddr(windowProc,4)) WhileNot Ende& WaitInput EndWhile


Dies ist die Offlinevariante vom Thread [Windows-Ende abfangen].

Valid CSS!

©2006 XProfan.Com