Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Herunterfahren Blockieren (https://www.delphipraxis.net/63360-herunterfahren-blockieren.html)

KuH_am_SchuH 17. Feb 2006 15:54


Herunterfahren Blockieren
 
Hihoo,
wie kann man denn den computer am runterfahren hindern ich versteh des mit WMQUERYENDSESSION nicht :wiejetzt:
und bei der suche hier hab ich auch nichts passendes gefunden :/ . ich hoffe ihr könnt mir weiterhelfen

Danke schonmal :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp:

NicoDE 17. Feb 2006 15:57

Re: Herunterfahren Blockieren
 
Zitat:

Zitat von KuH_am_SchuH
wie kann man denn den computer am runterfahren hindern

Ohne Eingriff in die Systemkonfiguration? Gar nicht.

DIe übliche Gegenfrage: was willst du damit erreichen?

KuH_am_SchuH 17. Feb 2006 15:59

Re: Herunterfahren Blockieren
 
es interesiert mich einfach, will ja acuh was dazulernen :wink:

-=wWw=- AK23 17. Feb 2006 16:12

Re: Herunterfahren Blockieren
 
Noch ne frage, was bringt dir das einen PC am einzig nützlichen zu hindern was er kann?

ausserdem gibts ja einen Powerknopf :stupid:

KuH_am_SchuH 17. Feb 2006 16:22

Re: Herunterfahren Blockieren
 
lol :P

TStringlist 17. Feb 2006 20:29

Re: Herunterfahren Blockieren
 
Die Funktionsweise der WM_QueryEndSession/WM_EndSession-Messages hat sich ab W2k geändert. Davor, bei Win95 z.B., bekamen bei einem eingeleiteten ShutDown alle laufenden Applications jeweils zuerst mal eine solche WM_QueryEndSession-Message zugeschickt. Und erst nachdem sämtliche Applications diese Message dann auch mit TRUE beantwortet hatten schickte das System dann an jede noch ein eine WM_EndSession-Message hinterher, wodurch die Apps dann beendet wurden und sich das System anschließend heruntergefahren hat.

Ab W2k ist es jetzt aber so, dass jede einzelne Application nun zuerst komplett (mit WM_QueryEndSession u. WM_EndSession) zu Ende abgehandelt wird, bevor überhaupt eine jeweils nächste App diesbezüglich erst an der Reihe ist, bearbeitet zu werden. Es kann jetzt also durchaus so sein, dass schon 3 Applications befragt wurden, ein TRUE antworteten und sich danach geclosed haben und eine vierte Application diese Query dann verneint und der ShutDown-Prozess damit insgesamt noch abgebrochen wird.

Warum MS das so geändert hat? No Idea. Das frühere Verfahren fand ich jedenfalls auch irgendwie etwas schlüssiger.

Ein ShutDown ist aber insgesamt trotzdem einigermaßen einfach verhinderbar. Und zwar mittels eines Programms welches sich der Api-Funktion 'SetProcessShutdownParameters' bedient. Damit kannst du nämlich für den Fall eines ShutDowns bestimmen, an welcher Position in der Abfragereihenfolge dein Programm angesiedelt sein soll. Wählst du diese Position also so aus, dass dein Prog immer als erstes diese WM_QueryEndMessage bekommt, und beantwortest du diese dann jedesmal mit FALSE, so dürfte jeder normale ShutDown-Prozess damit relativ einfach blockierbar sein.

Luckie 17. Feb 2006 20:33

Re: Herunterfahren Blockieren
 
Aber nicht wenn EWX_FORCE gesetzt ist oder der Pwerknopf gedrückt wird.

TStringlist 17. Feb 2006 20:43

Re: Herunterfahren Blockieren
 
jo, dat stimmt natürlich *g*

Luckie 17. Feb 2006 20:47

Re: Herunterfahren Blockieren
 
Womit wir wieder bei Nicops Aussage wären. ;) Glaub mir, jemand der die Kernel32-dll zum Freizeitvergnügen debuggt und auseinandernimmt, kennt sich mit Windows aus und was der sagt, hat meist Hand und Fuß. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz