![]() |
Warum funktionieren meine Messages nicht?
Hi,
also ich habe das mit dem Hooken hinbekommen, so jetzt möchte ich die Daten die der Hook abfaängt an meine Anwendung über Messages senden, es kommt nur, wie wahrscheinlich erwartet, nichts an. Ich habe dann um es überhaupt zu testen noch eine 2. Anwendung programmiert. Die Erste, die die Daten erstmal nur Empfangen und in einem Edit anzeigen soll, sieht so aus:
Delphi-Quellcode:
Die Zweite, die ich zum testen benutze sieht so aus:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const WM_mymessage=WM_User+2; type TForm1 = class(TForm) Edit1: TEdit; private procedure WndProc(var msg : TMessage); override; { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WndProc(var msg : TMessage); begin if msg.Msg = WM_mymessage then begin Edit1.Text:=inttostr(msg.WParam); end else begin inherited WndProc(msg); end; end; end.
Delphi-Quellcode:
Da ich das Fensterhandle der Anwendung nicht immer rausfinden will, broadcaste ich sie einfach an alle. Eigentlich sollte doch jetzt im Edit 1 eine Message ankommen, wenn das Empfangsprogramm läuft und das 2. gestartet wird, oder?
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; const WM_mymessage=WM_User+2; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin postmessage(HWND_BROADCAST,WM_mymessage,5,5); end; end. Gruß Materic |
Re: Warum funktionieren meine Messages nicht?
Hi,
also ich bin nich so der Fachmann für Messages, aber ich glaube nicht, dass sie für den Datenverkehr bzw. den Austausch größerer Datenmengen konzipiert wurden ;-) Da eignen sich eher ![]() ![]() Oder du suchst mal nach ![]() |
Re: Warum funktionieren meine Messages nicht?
mit HWND_BROADCAST sendest du die message eben nicht an alle fenster. folgendes hab ich hier dazu gefunden:
![]() Zitat:
|
Re: Warum funktionieren meine Messages nicht?
Zitat:
|
Re: Warum funktionieren meine Messages nicht?
ist den der Empfang der Messages richtig? Weil selbst wenn ich genau an das Handle des Fensters sende, kommt nichts an....
|
Re: Warum funktionieren meine Messages nicht?
Das Empfangen dürfte passen, aber stimmt auch das Handle?
|
Re: Warum funktionieren meine Messages nicht?
ich habe via Winspy das handle des Form1 rausgesucht, ist das falsch? Weil ya das Hauptfenster unsichtbar ist?
EDIT: Okay muss mich korrigieren, jetzt geht es mit dem richtigen Handle, nur wie mache ich das, wenn ich das nicht weis..... |
Re: Warum funktionieren meine Messages nicht?
wie "unsichtbar" ist es? per hide oder minimiert?
evtl. ist ja TApplication.OnMessage was für dich, hat mir schon öfters bei solchen Sachen geholfen... das handle kann du z.B. mittels ![]() ![]() //edit irgendwie war nur der halbe Text sichtbar...hier beim editieren steht alles :gruebel: HTH Frank |
Re: Warum funktionieren meine Messages nicht?
Such dein Fenster mit
![]() |
Re: Warum funktionieren meine Messages nicht?
Zitat:
Wenn du mit HWND_BROADCAST arbeiten möchtest dann benutze RegisterWindowMessage(), außerdem wäre es notwendig, wenn du die Nachricht mit der Komponente TApplicationEvents im Ereignis onMessage abfängst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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