AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Aufrufer von ExitWindowsEx herausfinden
Thema durchsuchen
Ansicht
Themen-Optionen

Aufrufer von ExitWindowsEx herausfinden

Ein Thema von Christian Seehase · begonnen am 17. Mär 2012 · letzter Beitrag vom 17. Mär 2012
Antwort Antwort
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#1

Aufrufer von ExitWindowsEx herausfinden

  Alt 17. Mär 2012, 00:45
Moin Zusammen,

ich versuche herauszufinden, welcher Prozess die Funktion ExitWindowsEx aufgerufen hat.
Sie jemand eine Chance, oder hat vielleicht sogar eine Idee, wie ich das umsetzen kann?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Aufrufer von ExitWindowsEx herausfinden

  Alt 17. Mär 2012, 00:57
Du könntest OllyDBG benutzen, aber da ich denke du brauchst es in deinem eigenen Programm, könntest du dir vllt. ein wenig bei der Cheat Engine(mit Source) abschauen. Ich glaube, da gabs unteranderem die möglichkeit, Break Points zu setzen. Benutze das Programm aber nicht, also bin ich mir nicht zu 100% sicher...
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Aufrufer von ExitWindowsEx herausfinden

  Alt 17. Mär 2012, 01:21
Moin Martin,

danke, dass schau ich mir gleich mal an.

Mein Problem ist halt, dass ich es im laufenden Betrieb automatisch ermitteln muss.

[EDIT sagt]
Schade, der Sourcecode steht, zumindest zur Zeit nicht zur Verfügung
[/EDIT sagt]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist

Geändert von Christian Seehase (17. Mär 2012 um 01:25 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

AW: Aufrufer von ExitWindowsEx herausfinden

  Alt 17. Mär 2012, 01:47
WM_QUERYENDSESSION kommt immer von CSRSS.
http://en.wikipedia.org/wiki/Client/...time_Subsystem
.
http://books.google.de/books?id=YDAC...page&q&f=false

Mehr Infos:
Seite 286
csit.udc.edu/~byu/UDC3529315/WindowsInternals-4e.pdf

Geändert von hathor (17. Mär 2012 um 02:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#5

AW: Aufrufer von ExitWindowsEx herausfinden

  Alt 17. Mär 2012, 02:24
Nur das Dieses das Handle des Empfängers (für den diese Message bestimmt ist, als an Welches Diese gesendet wurde) und nicht das Handle des Senders ist.

Der Sender ist vermutlich Windows, welches diese Message im System verteilt, aber vom Auslöser sieht man da wohl auch nichts mehr.

Eventuell wird irgendwo in der Message gespeichert von welchem Thread sie ausgelöst wurde und wenn Windows Diese direkt über den selben Thread im System verteils und das nicht erst via Message in sich selbst verteilt und Sie somit wiederum erst über eine MessageLoop (im verarbeitenden Thread) rumreicht.

[edit] hmmm, edit?
ging um das HWND im Message-Window-Proc
da geb ich mir so Mühe den Knoten aus meinen Gedanken zu bekommen und dann sieht die RedBox nichtmal den Alnass mich zu warnen

Zitat:
Mein Problem ist halt, dass ich es im laufenden Betrieb automatisch ermitteln muss.
Du müßtest ja nur Einmal rausbekommen, ob und man es nachträgich rausbekommt.
Ansonsten bleibt wohl nur ein globaler WinAPI-Hook dieser Shoutdown-Funktionen, aber wenn es eventuell durch einen Treiber/Interrupt (drücken der Ausschalttaste) ausgelöst wird ...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (17. Mär 2012 um 02:40 Uhr)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Aufrufer von ExitWindowsEx herausfinden

  Alt 17. Mär 2012, 03:34
Moin Zusammen,

@Hathor:
Danke schon mal für den Tip mit WM_QUERYENDSESSION.
Damit könnte ich schon mal unterbinden, dass der Rechner ohne Rückfrage herunterfährt, da EWX_FORCE offensichtlich nicht verwendet wird.

@Himitsu:
Das der Ausschalter gedrückt wird kann ich ausschliessen.
Es geht darum herauszufinden welcher Prozess (besser welches Programm) einen Rechner ohne Vorwarnung herunterfährt.
Ein entsprechender Eventlog-Eintrag zeigt, dass dies über ExitWindowsEx initiiert wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#7

AW: Aufrufer von ExitWindowsEx herausfinden

  Alt 17. Mär 2012, 06:14
Es sollten sich hier auch schon einige Einträge zu WM_QUERYENDSESSION finden lassen.
In Win7 scheint es (wenn ich mich recht erinnere) so, als daß Windows nicht unbedingt darauf hört.

Der "einfachste Weg, wäre wohl der globale WinAPI-Hook, aber alle Prozesse lassen sich nicht hooken. (die lieben Recht)

MSDN-Library durchsuchenShutdownBlockReasonCreate klingt auch recht net, aber ob ExitWindowsEx drauf reagiert ... k.A.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#8

AW: Aufrufer von ExitWindowsEx herausfinden

  Alt 17. Mär 2012, 14:08
Anmerkung:
Console applications can use the SetConsoleCtrlHandler function to receive shutdown notification.

Service applications can use the RegisterServiceCtrlHandlerEx function to receive shutdown notifications in a handler routine.
.
Ausserdem:
Certain types of applications will no longer be allowed to block shutdown.

At shutdown, Windows Vista will check whether each running application is not responding (an application is defined as not responding if it has not responded to any of its window messages in the last 5 seconds), and, if so, automatically terminate it.

Windows Vista will also not allow console applications or applications that have no visible top-level windows to block shutdown. In most cases, such applications are less important to users at shutdown than applications that do have visible top-level windows. If an application without a visible top-level window blocks shutdown by vetoing WM_QUERYENDSESSION, or takes over 5 seconds to respond to WM_QUERYENDSESSION or WM_ENDSESSION, Windows will automatically terminate it.

However, if an application with no visible top-level windows uses the new API to proactively indicate that it needs to block shutdown, Windows Vista will not automatically terminate it, and will instead treat it like an application that does have a visible top-level window.

Was für VISTA gilt ist auch für WIN 7 relevant.

Geändert von hathor (17. Mär 2012 um 14:17 Uhr)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Aufrufer von ExitWindowsEx herausfinden

  Alt 17. Mär 2012, 15:52
Moin Zusammen,

wie ich euren Beiträgen entnehme, habe ich vergessen anzugeben, dass es sich um XP handelt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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