Seite 2 von 2
Verfasst: 13.05.2007 18:34
von ts-soft
bluejoke hat geschrieben:Gibts nicht ne Option "schnelles Herunterfahren" oder so? Kanns nicht sein, dass es das ist?
Diese Option sorgt dafür das #WM_QUERYENDSESSION zwar gesendet wird,
aber es wird nicht abgewartet, ob alle Programme ihr Okay gegeben haben.
Ist für reine Computerhobbyisten vielleicht interessant, aber alle anderen,
sollten die Finger davon lassen. Datenverluste, nicht ordnungsgemäß beendete
Services usw. sind die folgen.
Verhinderer verhindert nicht
Verfasst: 13.10.2014 00:48
von dlldev
Unter Windows XP läuft das Programm 1A, leider nicht unter Windows 8 (8.1). Keine Fehlermeldung, kein Logeintrag, Windows wird einfach runter gefahren bez. neu gestartet. Bin den Source nun x mal durchgegangen und weiss ehrlich gesagt nicht wo der Wurm drin ist. Ach ja, als Administrator starten habe ich auch noch versucht, brachte leider auch nichts. Hat einer von Euch eine Idee?
Re: Herunterfahren/Abmelden verhindern
Verfasst: 13.10.2014 18:13
von edel
Was mich etwas verwundert ist das "If lParam = 0". Es steht nirgends etwas von einer Wert 0.
Code: Alles auswählen
ENDSESSION_CLOSEAPP 0x00000001
The application is using a file that must be replaced, the system is being serviced, or system resources are exhausted. For more information, see Guidelines for Applications.
ENDSESSION_CRITICAL 0x40000000
The application is forced to shut down.
ENDSESSION_LOGOFF 0x80000000
Re: Herunterfahren/Abmelden verhindern
Verfasst: 25.10.2014 11:51
von dlldev
Danke für den Hinweis, anscheinend hat sich bei Windows 8 etwas an der Abmelde Prozedur bez. dessen Events verändert. Scheint nicht mehr zu gehen.

Re: Herunterfahren/Abmelden verhindern
Verfasst: 22.08.2016 14:38
von Rudi
Bei Shutdown kommt kein lParam bzw. Null.
Erfolgreich getestet unter Windows 7, 8.1 und 10:
Code: Alles auswählen
; ╔════════════════╤════════════════╗
; ║ ┌─────┴─────┐ ║
; ╟──────────┤ Example ├──────────╢
; ║ └─────┬─────┘ ©Rudi☺ ║
; ╚════════════════╧════════════════╝
#ENDSESSION_CLOSEAPP = $00000001
#ENDSESSION_CRITICAL = $40000000
#ENDSESSION_LOGOFF = $80000000
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_QUERYENDSESSION
If lParam & #ENDSESSION_CLOSEAPP
MessageRequester("QUERYENDSESSION", "CLOSEAPP lParam: "+Str(lParam))
ElseIf lParam & #ENDSESSION_CRITICAL
MessageRequester("QUERYENDSESSION", "CRITICAL lParam: "+Str(lParam))
ElseIf lParam & #ENDSESSION_LOGOFF
MessageRequester("QUERYENDSESSION", "LOGOFF lParam: "+Str(lParam))
Else
MessageRequester("QUERYENDSESSION", "Else lParam: "+Str(lParam))
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 0, 0, 200, 100, "Messages", #PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)
SetWindowCallback(@WinCallback())
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
CloseWindow(0)
Break
EndSelect
ForEver
EndIf
End
[/size]Es muss natürlich auch etwas da sein, das die Programmausführung bzw. den Shutdown anhält - wie hier der MessageRequester.