title image


Smiley Re: du brauchst doch nur warten...
Hi Gaga,



Shell erzeugt einen neuen Prozess und genau der wird schon gar nicht mehr gestartet, wenn die Callbackroutine mit dieser Message aufgerufen wird ist es schon fast zu spät. Er kann eigentlich nur noch Dinge innerhalb seines eigenen Prozessraum erledigen - und den Absturz canceln - wobei auch nur wirklich sein Prozess stehen bleibt - alles andere wurde terminiert.



Deswegen mein Vorschlag: Er soll CallWindowProc() aufrufen, die Abbruchsequenz somit stoppen und erst dann die Shell().



Man kann sich den Prozess in etwa bildlich vorstellen wenn man an das "Nichts" des Films: "Unendlichen Geschichte" denkt; Es frisst sich immer weiter durch Phantasia, noch während dem Gegenmaßnahmen eingeleitet wurden.



Konkret würde ich mir die CallbackRoutine so vorstellen:





Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, _

ByVal wParam As Long, ByVal lParam As Long) As Long



Dim Antwort As VbMsgBoxResult



If uMsg = WM_QUERYENDSESSION Then

Antwort = MsgBox("Shutdown?", vbQuestion + vbYesNo, "Herunterfahren?")

If Antwort = vbYes Then

MsgBox "GoodBye", vbExclamation + vbOKOnly, "Ok"

WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)

Exit Function

End If

MsgBox "Shutdown aufgehalten!", vbExclamation + vbOKOnly, "Stop"

WindowProc = CallWindowProc(lpPrevWndProc, hw, WM_CANCELMODE, wParam, wParam)

Shell ("C:\COPY.BAT")

'Hier warten, wie GAGA beschreibt ....

Exit Function

End If



WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)

End Function








Programmierst Du noch frei oder wirst Du schon von Microsoft verwaltet ( .NET)?



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: