Moin !
Ich habe heute mal diesen Code hier probiert:
http://www.swissdelphicenter.ch/torr...ode.php?id=418
Funktioniert auch einwandfrei. Nun würde ich das aber gerne in eine
Unit packen um es in verschiedenen Anwendungen nutzen zu können. Aber irgendwie kriege ich das nicht hin. Mein bisheriges Konstrukt wird zwar fehlerfrei kompiliert, aber es geht nicht
:
Delphi-Quellcode:
unit IPC_Handler;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TWMMYMessage =
record
Msg: Cardinal;
// ( first is the message ID )
Handle: HWND;
// ( this is the wParam, Handle of sender)
Info: Longint;
// ( this is lParam, pointer to our data)
Handle2: HWND;
Handle3: HWND;
PID: LongInt;
Result: Longint;
end;
type
TIPC =
class(TForm)
private
public
procedure DefaultHandler(
var Message);
override;
procedure WMMYMessage(
var Msg: TWMMYMessage);
end;
Var
WM_OURMESSAGE: DWORD;
implementation
procedure TIPC.DefaultHandler(
var Message);
var
ee: TWMMYMessage;
begin
with TMessage(
Message)
do
begin
if (Msg = WM_OURMESSAGE)
then
begin
ee.Msg := Msg;
ee.Handle := wParam;
ee.Info := lParam;
ee.Handle2 := Application.Handle;
ee.Handle3 := FindWindow(
nil, PChar(Application.Title));
ee.PID := GetCurrentProcessID;
// Checking if this message is not from us
if ee.Handle <>
Handle then
WMMYMessage(ee);
end
else
inherited DefaultHandler(
Message);
end;
end;
procedure TIPC.WMMYMessage(
var Msg: TWMMYMessage);
begin
//Auswertung der Broadcast Message
end;
initialization
WM_OURMESSAGE := RegisterWindowMessage('
Our broadcast message');
end.
Die Anwendung sieht dann so aus:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IPC_Handler;
type
TForm1 =
class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(HWND_BROADCAST, IPC_Handler.WM_OURMESSAGE,
Handle, Top);
end;
end.
Aber so recht will das nicht. Kann mir jemand sagen wie ich das in den Griff kriege?