AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

message kommt im Fenster nicht an

Ein Thema von R2009 · begonnen am 8. Jan 2010 · letzter Beitrag vom 8. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#1

message kommt im Fenster nicht an

  Alt 8. Jan 2010, 07:46
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:
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;
Hab ich mit dieser Funktion ermittelt:
Delphi-Quellcode:
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;
Abgefangen werden die messages, in der jeweiligen Form mit:
Delphi-Quellcode:
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;
Was mach ich falsch? Warum kommt die Message nicht an?


Grüsse
Rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: message kommt im Fenster nicht an

  Alt 8. Jan 2010, 08:26
Also ich bin mir nicht sicher...aber das var handled könnte Probleme machen.
Versuchs erstmal ohne?

Delphi-Quellcode:
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;
Sonst überprüf vll mal die Handle-Eigenschaft der Forms und schau ob die Handles übereinstimmen mit deiner Liste?

MfG Alaitoc
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#3

Re: message kommt im Fenster nicht an

  Alt 8. Jan 2010, 09:11
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
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#4

Re: message kommt im Fenster nicht an

  Alt 8. Jan 2010, 09:16
Hi,

geht auch aus einer anderen Form nicht:

Grüsse
rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#5

Re: message kommt im Fenster nicht an

  Alt 8. Jan 2010, 09:22
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)
Uwe Raabe
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#6

Re: message kommt im Fenster nicht an

  Alt 8. Jan 2010, 09:24
Hi,
ich habe das ganze protokolliert:

Delphi-Quellcode:
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;
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.
Ich bin ziemlich ratlos.

Grüsse
Rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#7

Re: message kommt im Fenster nicht an

  Alt 8. Jan 2010, 09:29
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
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: message kommt im Fenster nicht an

  Alt 8. Jan 2010, 09:37
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
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#9

Re: message kommt im Fenster nicht an

  Alt 8. Jan 2010, 09:47
Hi,
hab ich alles probiert. Ich häng mal meinen Quelltext an. das Ganze ist mit D7 prof erstellt.

Grüsse
rainer
Angehängte Dateien
Dateityp: zip test_181.zip (211,6 KB, 2x aufgerufen)
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: message kommt im Fenster nicht an

  Alt 8. Jan 2010, 09:49
Nah dann hast du dir aber scheinbar meinen Code nicht genau angeschaut

procedure GetMessages( var Msg: TMessage ); message SET_LNG_CMD; // Das Endstück fehlt Das fehlt scheinbar bei dir bei deiner Deklaration.

MfG Alaitoc
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz