![]() |
message kommt im Fenster nicht an
Hi,
In memo1 stehen die Handles aller Fenster der Applikation. Ich versuche an all diese Fenster eine Message zu schicken. Nur kommt sie da nie an.
Delphi-Quellcode:
Hab ich mit dieser Funktion ermittelt:
procedure TForm1.Button2Click(Sender: TObject);
var i:integer; begin //cardinal(memo1.lines.Strings[i]) for i:=0 to 1 do SendMessage(cardinal(memo1.lines.Strings[i]),SET_LNG_CMD,0,0); end;
Delphi-Quellcode:
Abgefangen werden die messages, in der jeweiligen Form mit:
function EnumWinx(hWnd: THandle; ProcID: PCardinal): Boolean; stdcall;
var WinProcId: cardinal; Text: AnsiString; begin Result := True; if IsWindowVisible(hWnd) then begin GetWindowThreadProcessID(hWnd, WinProcId); if ProcID^ = WinProcId then begin form1.memo1.lines.add(inttostr(hwnd)); end; end; end;
Delphi-Quellcode:
Was mach ich falsch? Warum kommt die Message nicht an?
const
SET_LNG_CMD = WM_USER+2; ..... procedure TForm1.GetMessages(var msg: TMsg; var handled: boolean); begin if msg.message = SET_LNG_CMD then begin ...... handled:=true; end; end; Grüsse Rainer |
Re: message kommt im Fenster nicht an
Also ich bin mir nicht sicher...aber das var handled könnte Probleme machen.
Versuchs erstmal ohne?
Delphi-Quellcode:
Sonst überprüf vll mal die Handle-Eigenschaft der Forms und schau ob die Handles übereinstimmen mit deiner Liste?
const
SET_LNG_CMD = WM_USER+2; procedure GetMessages( var Msg: TMessage ); message SET_LNG_CMD; procedure TForm1.GetMessages( var Msg: TMessage ); begin if msg.message = SET_LNG_CMD then begin ShowMessage('Blubb'); end; end; MfG Alaitoc |
Re: message kommt im Fenster nicht an
Hi,
Hab die Handles verglichen, sind die gleichen. Das Problem ist, dass die Message überhaupt nicht ankommt, also TForm1.GetMessages garnicht aufgerufen wird. Allerdings kommt meine Message aus der gleichen Form...Vielleicht ist das das Problem. Grüsse Rainer |
Re: message kommt im Fenster nicht an
Hi,
geht auch aus einer anderen Form nicht: Grüsse rainer |
Re: message kommt im Fenster nicht an
Dein Problem ist die Umwandlung von Integer in Strings und zurück. In die eine Richtung benutzt du korrekt IntToStr(hwnd), aber in die andere machst du einfach einen TypeCast [i]cardinal(memo1.lines.Strings). Das geht so nicht (Stichwort: TypeConversion vs. TypeCast)!
Versuch mal das: [i]StrToInt(memo1.lines.Strings) |
Re: message kommt im Fenster nicht an
Hi,
ich habe das ganze protokolliert:
Delphi-Quellcode:
Es kommt alles an nur meine eigenen Messages nicht. Kann es sein, das ganze findet ja innerhalb ein und derselben Applikation statt, dass die Message bereits von der application an sich abgefangen wird und erst garnicht beim Fenster ankommt.
procedure TForm1.GetMessages(var msg: TMsg; var handled: boolean);
var a:string; begin memo3.Lines.Add(inttostr(msg.message)); if msg.message = SET_LNG_CMD then begin a:=''; // was ausgführt werden soll //handled:=true; end; end; Ich bin ziemlich ratlos. Grüsse Rainer |
Re: message kommt im Fenster nicht an
Hi Uwe,
hatte ich alles auch schon probiert. Funktioniert nicht. [delphi] procedure TForm1.Button2Click(Sender: TObject); var i:integer;text:ansistring; begin for i:=0 to memo1.lines.count-1 do begin SendMessage(strtoint(memo1.lines.Strings[i]),SET_LNG_CMD,1,0); end; end; Ist da sonst noch irgendetwas falsch? Grüsse rainer |
Re: message kommt im Fenster nicht an
Hast du auch mal versucht das ohne das Flag handled zu implementieren?
Also testweise? ( Wie oben in meinem Post ) Ich konnte nämlich irgendwie keinen Anwendungsfall finden, wo das so gemacht wird... MfG Alaitoc |
Re: message kommt im Fenster nicht an
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
hab ich alles probiert. Ich häng mal meinen Quelltext an. das Ganze ist mit D7 prof erstellt. Grüsse rainer |
Re: message kommt im Fenster nicht an
Nah dann hast du dir aber scheinbar meinen Code nicht genau angeschaut ;)
Delphi-Quellcode:
Das fehlt scheinbar bei dir bei deiner Deklaration.
procedure GetMessages( var Msg: TMessage ); message SET_LNG_CMD; // Das Endstück fehlt
MfG Alaitoc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 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 by Thomas Breitkreuz