Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: WM_QUERYENDSESSION ohne Fenster

  Alt 16. Nov 2012, 00:34
Alles, was per PostMessage/PostThreadMessage versendet wird, geht immer über die MessageQueue einen Threads. Alle Fenster und deren Message-Eingang sind mit einem Thread verknubblt ... genauer standardmäßig mit dem Thread, in dessen Kontext dieses "Fenster" (auch ein Edit oder Memo ist "nur" ein Fenster, weswegen Windows auch Windows heißt).

SendMessage geht zwar direkt an die Komponenten, es wird aber dennoch über diesen Thread synchronisiert.


Schöne Schleife, die nichts macht, außer zu schlafen und sich im Kreis drehen ... Wo werden da denn die Messages verarbeitet?
(in der VCL ist der Code quasi in Application.ProcessMessages versteckt und Dieses mußt du nun alles selber machen)
Schau dir mal die Delay-Prozedur in der CodeLib, bzw. im Forum an (da wird oftmals auch eine NonVCL-Version erwähnt) und nahezu sämtliche NonVCL-Tutorials sind auch geeignet, denn dort machen die fast immer alles selber.

Derartige Messages gehen oftmals über HWND_BROADCAST raus, was dann an alle Top-Level-Windows gesendet wird.
Bei Google suchenWM_QUERYENDSESSION wird aber, soweit ich das verstanden hab, nur an alle Top-Level-Windows in Desktop-Apps gesendet, also wohl nicht an Services und Co.


http://msdn.microsoft.com/en-us/libr.../ms644927.aspx
Abschnitt "Message Handling" ... Hier im Forum suchenGetMessage usw.
$2B or not $2B

Geändert von himitsu (16. Nov 2012 um 00:40 Uhr)
  Mit Zitat antworten Zitat