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.