AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Warum funktionieren meine Messages nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum funktionieren meine Messages nicht?

Ein Thema von Masteric · begonnen am 12. Jul 2008 · letzter Beitrag vom 14. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
Masteric

Registriert seit: 1. Aug 2007
Ort: Melsungen
155 Beiträge
 
Delphi 7 Professional
 
#1

Warum funktionieren meine Messages nicht?

  Alt 12. Jul 2008, 23:50
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:
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.
Die Zweite, die ich zum testen benutze sieht so aus:

Delphi-Quellcode:
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.
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?

Gruß Materic
"Programmieren ist eine der universellsten, allübergreifendsten und höchsten von Menschen erreichten Formen der Kreativität."
Nur weil Gott die Welt in 6 Tagen erschaffen hat, heisst das nicht, dass Informatiker alles in 6 Tagen programmieren können.
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#2

Re: Warum funktionieren meine Messages nicht?

  Alt 13. Jul 2008, 00:18
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 Hier im Forum suchenMemory Mapped Files (Hier im Forum suchenMMF).
Oder du suchst mal nach Hier im Forum suchenWM_SETTEXT.
Philipp F.
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#3

Re: Warum funktionieren meine Messages nicht?

  Alt 13. Jul 2008, 02:14
mit HWND_BROADCAST sendest du die message eben nicht an alle fenster. folgendes hab ich hier dazu gefunden:
http://www.delphipraxis.net/internal...ct.php?t=87443

Zitat:
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
das ist richtig. aber einen 4 byte großen integer sehe ich nicht als riesen datenmenge an :P
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Warum funktionieren meine Messages nicht?

  Alt 13. Jul 2008, 10:36
Zitat von 1234588:
mit HWND_BROADCAST sendest du die message eben nicht an alle fenster.
Natürlich wird eine Nachtricht mit dem Adressaten HWND_BROADCAST an alle Toplevel Fenster geschickt. Nur leider macht ihm hier die VCL einen Strich durch die Rechnung mit dem unsichtbaren Anwendungsfenster, welches bei einer VCL-Anwendung das Hauptfenster ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Masteric

Registriert seit: 1. Aug 2007
Ort: Melsungen
155 Beiträge
 
Delphi 7 Professional
 
#5

Re: Warum funktionieren meine Messages nicht?

  Alt 13. Jul 2008, 10:44
ist den der Empfang der Messages richtig? Weil selbst wenn ich genau an das Handle des Fensters sende, kommt nichts an....
"Programmieren ist eine der universellsten, allübergreifendsten und höchsten von Menschen erreichten Formen der Kreativität."
Nur weil Gott die Welt in 6 Tagen erschaffen hat, heisst das nicht, dass Informatiker alles in 6 Tagen programmieren können.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Warum funktionieren meine Messages nicht?

  Alt 13. Jul 2008, 10:46
Das Empfangen dürfte passen, aber stimmt auch das Handle?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Masteric

Registriert seit: 1. Aug 2007
Ort: Melsungen
155 Beiträge
 
Delphi 7 Professional
 
#7

Re: Warum funktionieren meine Messages nicht?

  Alt 13. Jul 2008, 10:48
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.....
"Programmieren ist eine der universellsten, allübergreifendsten und höchsten von Menschen erreichten Formen der Kreativität."
Nur weil Gott die Welt in 6 Tagen erschaffen hat, heisst das nicht, dass Informatiker alles in 6 Tagen programmieren können.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#8

Re: Warum funktionieren meine Messages nicht?

  Alt 13. Jul 2008, 10:56
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 Hier im Forum suchenFindWindow oder Hier im Forum suchenEnumWindows herausfinden.

//edit irgendwie war nur der halbe Text sichtbar...hier beim editieren steht alles

HTH Frank
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Warum funktionieren meine Messages nicht?

  Alt 13. Jul 2008, 10:57
Such dein Fenster mit MSDN-Library durchsuchenFindWindow.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
extrem

Registriert seit: 27. Mai 2008
72 Beiträge
 
#10

Re: Warum funktionieren meine Messages nicht?

  Alt 13. Jul 2008, 11:09
Zitat von Masteric:
EDIT: Okay muss mich korrigieren, jetzt geht es mit dem richtigen Handle, nur wie mache ich das, wenn ich das nicht weis.....
In Beitrag #3 wurde dir ein Link genannt, wo es mit HWND_BROADCAST funktioniert. Mit FindWindow bei sowas zu machen wäre mir viel zu primitiv.
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.
  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 21:43 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