Autor Beitrag
Ruditschka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: Mi 14.05.03 12:45 
Wahrscheinlich ist es nur eine einfache Anfängerfrage, aber im Moment komm ich ohne nicht weiter...

Wie kann ich Messages empfangen, die mit SendMessage gesendet wurden und mit RegisterWindowMessage registriert wurden?

Einfach eine Prozedur mit der Direktive message zu nehmen klappt nicht, da Delphi hinter message einen Konstantenausdruck erwartet :(
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mi 14.05.03 12:58 
Die Methode WndProc überschreiben...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mi 14.05.03 12:59 
Du musst die Methode WndProc überschreiben, durch die alle Botschaften geschleust werden.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
protected
  procedure WndProc(var Message: TMessage); override;
end;

procedure TForm1.WndProc(var Message: TMessage);
begin
  if Message.Msg = WM_MYMESSAGE then
  begin
    ShowMessage('Botschaft empfangen');
    Message.Result := 1; // irgendwas an SendMessage zurückgeben.
  end
  else
    inherited;
end;

_________________
Ist Zeit wirklich Geld?
Tana´Ri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 230



BeitragVerfasst: Mi 14.05.03 13:01 
entweder du nutzt die WndProc, dies ist die funktion in der Messages verarbeitet werden, Threads besitzen keine solche Funktion (nur Form); du kannst ja mit registerwindowmessage einen eindeutigen messagetyp deklarieren somit könntest du über PeekMessage und GetMessage versuchen sie in der Windowsnachrichtenwarteschlange zu finden.

_________________
mfg
Tana´Ri
Ruditschka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: Mi 14.05.03 23:36 
Ich habe die Prozedur von AndyB mal eingebaut. Damit empfange ich jedoch nicht meine Nachricht (zumindest wird sie nicht rausgefiltert).
Durch eine Ausgabe mit IntToStr weiß ich, dass sowohl im Hook selber (Sender der Nachricht) als auch in meiner Form die selbe Message-ID verwendet wird. Wenn ich das ganze mit einer festen Konstante á la "WM_USER + $01" und eigener Prozedur mit message-Direktive mache, klappt alles (meistens, komischerweise wird nicht jeder Mausklick vom MouseHook abgefangen ?!?).

Hat noch Jemand eine Idee?

Gruß
Christoph