David Strutz, 01.07.2005 18:29: Windows Ende / Herunterfahren / Abmelden abfangen von Andreas Miethe:[code:1:238c1c9b54]'#############################
'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
[/code:1:238c1c9b54]Salve, iF.
Dies ist die Offlinevariante vom Thread [Windows Ende / Herunterfahren / Abmelden abfangen].
©2006 XProfan.Com