![]() |
Eine Message senden an Programm ohne Fenster. Wie?
Ich habe in meinem Programm kein einziges Fenster, nur ein TrayIcon und ein PopupMenu dafür. Die ganze Code steht bei mir in der Projektdatei und alles was ich vor hatte funktioniert auch sehr gut. Nun möchte ich von einem anderen Programm eine Message an dieses Program senden. Ein String. Ich habe das früher schon gemacht, indem ich mit FindWindowEx ein bestimmtes Fenster gefunden habe und mit SendMessage ein String an dieses Fenster gesendet habe. Hier aber habe ich keine Fenster?
Wie mache ich das? |
Re: Eine Message senden an Programm ohne Fenster. Wie?
erzeug dir einfach ein
![]() oder einfach 'nen unsichtbares Fenster oder verwende andere IPCs |
Re: Eine Message senden an Programm ohne Fenster. Wie?
Threads können eine eigene Message-Queue haben. Siehe
![]() |
Re: Eine Message senden an Programm ohne Fenster. Wie?
Zitat:
![]() |
Re: Eine Message senden an Programm ohne Fenster. Wie?
du mußt dir eine Nachrichtenschleife aufbauen und wenn es sein muß, dann kannst du per SetWindowLong auch noch eine NachrichtenProzedur beim Fenster angeben.
|
Re: Eine Message senden an Programm ohne Fenster. Wie?
Zitat:
|
Re: Eine Message senden an Programm ohne Fenster. Wie?
per SetWindowLong deine Prozedur beim Fenster angegeben hast, dann wird diese nun aufgerufen.
Delphi-Quellcode:
und die Kurzfassungen:
Var Msg: TMsg;
isUnicode: Boolean; Begin While PeekMessage(Msg, 0, 0, 0, PM_NOREMOVE) do Begin isUnicode := (Msg.hWnd <> 0) and IsWindowUnicode(Msg.hWnd); If isUnicode Then Begin If not PeekMessageW(Msg, 0, 0, 0, PM_REMOVE) Then Continue; End Else If not PeekMessageA(Msg, 0, 0, 0, PM_REMOVE) Then Continue; TranslateMessage(Msg); If isUnicode Then DispatchMessageW(Msg) Else DispatchMessageA(Msg); End; End;
Delphi-Quellcode:
Var Msg: TMsg;
Begin While PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do Begin TranslateMessage(Msg); DispatchMessage(Msg); End; End; // oder Var Msg: TMsg; Begin While GetMessage(Msg, 0, 0, 0) do Begin TranslateMessage(Msg); DispatchMessage(Msg); End; End; alternativ könnte man auch innerhalb dieser Schleife seine Messages abfragen (dabei besse noch das Fenster prüfen ... muß ja nicht alles in dieser Schleife für/von deinem Fesnter sein) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz