Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Art des ShutDowns aus WMQueryEndSession ermitteln (https://www.delphipraxis.net/53952-art-des-shutdowns-aus-wmqueryendsession-ermitteln.html)

Baeuerle 26. Sep 2005 08:05


Art des ShutDowns aus WMQueryEndSession ermitteln
 
Hallo,

habe ich die Möglichkeit abzufangen, wie der Rechner heruntergefahren wird ?
Aus "WMQueryEndSession" bekomme ich nur "ENDSESSION_LOGOFF" heraus, das heißt ich kann zwischen "Benutzer abmelden" und "Herunterfahren" unterscheiden.

Was ist aber mit "Reboot", "Shutdown and PowerOff"...

Vielleicht weiß jemand von euch wie ich die genaue Art des Shutdowns ermitteln kann.

Danke Baeuerle

Olli 26. Sep 2005 09:18

Re: Art des ShutDowns aus WMQueryEndSession ermitteln
 
Also so genau geht's vermutlich nur, wenn du die entsprechende Native API hookst - vorzugsweise über einen Treiber und direkt in der NTOSKRNL.EXE (also nicht über die SSDT), weil du es sonst verpassen könntest.

Eine Alternative wäre auch die GINA, welche du ersetzen könntest. In diesem Falle würdest du vermutlich benachrichtigt werden, ich bin aber nicht sicher wie genau das dann ist.

Baeuerle 26. Sep 2005 09:30

Re: Art des ShutDowns aus WMQueryEndSession ermitteln
 
Danke,

aber vielleicht kannst Du mir noch etwas mehr auf die Sprünge helfen :roll:

Ein weiterer Tipp wäre nicht schlecht.

Olli 26. Sep 2005 09:33

Re: Art des ShutDowns aus WMQueryEndSession ermitteln
 
Zitat:

Zitat von Baeuerle
aber vielleicht kannst Du mir noch etwas mehr auf die Sprünge helfen :roll:

Ein weiterer Tipp wäre nicht schlecht.

Moooment. Ich suche gerade. Hatte das schonmal letztens ausführlichst erklärt :zwinker:

Robert Marquardt 26. Sep 2005 09:37

Re: Art des ShutDowns aus WMQueryEndSession ermitteln
 
Da war doch letztens das WinWlx API = Plugin um die GINA-Meldungen abzuhoeren.

Olli 26. Sep 2005 09:43

Re: Art des ShutDowns aus WMQueryEndSession ermitteln
 
Zitat:

Zitat von Robert Marquardt
Da war doch letztens das WinWlx API = Plugin um die GINA-Meldungen abzuhoeren.

Ja, das ist die Winlogon API. Auf diese Funktionen innerhalb der Winlogon.exe greifst du ja zurück, wenn deine GINA geladen wurde. Leider ist aber dazu mindestens eine Änderung in der Registry und ein Neustart erforderlich. Außerdem sollte das Teil ausführlichst getestet werden, weil eine fehlerhafte GINA das System unbrauchbar macht.

Ein Beispiel findet sich hier:
http://assarbad.net/stuff/!export/ancient/agreementgina.rar

Inzwischen bin ich selber für meine GINA-Lösung auf C++ umgestiegen, da es dort einfacher lösbar ist. Aber diese alte GINA ist in Delphi konzipiert und sollte mind. auf Windows 2000 laufen. Für XP und 2003 könnten Schritte nötig werden um es kompatibel zu machen.

PS: Den Beitrag konnte ich nicht mehr finden :-?

EDIT: ... Robert, redest du vielleicht von MSDN-Library durchsuchenWinlogon Notification Packages? Die würden auch funktionieren. Da hast du recht. Habe ich garnicht daran gedacht.

Baeuerle 26. Sep 2005 09:53

Re: Art des ShutDowns aus WMQueryEndSession ermitteln
 
Ok, danke.

Leider ist das ganze wieder einmal etwas zu hakelig um dies bei den Kunden einzuführen. Denke da an die Probleme mit den verschieden OS,....

Werde wohl mit einem einfachen EWX_POWEROFF leben müssen.

Olli 26. Sep 2005 09:57

Re: Art des ShutDowns aus WMQueryEndSession ermitteln
 
Zitat:

Zitat von Baeuerle
Leider ist das ganze wieder einmal etwas zu hakelig um dies bei den Kunden einzuführen. Denke da an die Probleme mit den verschieden OS,....

Also die Notification Packages sind ziemlich straight-forward. Da ist nix hakeliges. Einziges mögliches Problem: zur Installation braucht's Adminrechte. Aber das sollte bei jeder Software möglich sein. Zumal sich sowas wunderbar für den Admin automatisieren ließe (Stichwort "unattended install").

Ich hatte leider nicht dran gedacht, aber Robert war ja schon auf der richtigen Spur - habe es nur etwas spät bemerkt.

Baeuerle 26. Sep 2005 10:22

Re: Art des ShutDowns aus WMQueryEndSession ermitteln
 
Sorry aber einen hab ich noch :drunken:

In der MSDN steht:
Windows NT and Windows Me/98/95: Winlogon notification packages are not supported.

Was mache ich dann ?

Olli 26. Sep 2005 10:36

Re: Art des ShutDowns aus WMQueryEndSession ermitteln
 
Du meinst, wenn es auf 9x läuft? Na dann machst du einen Fallback zu dem Standardschema, welches du oben gerade noch benutzen wolltest: keine Unterscheidung.

9x ist überflüssig bis sonstwohin. Das Problem ist, daß man es manchmal unterstützen muß - allerdings würde ich da nicht zuviel Arbeit hineinstecken, weil es sich um ein aussterbendes OS handelt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.
Seite 1 von 2  1 2      

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