Mir ist das zu aufwendig. Also werde ich den "Packer" auch als (unsichtbares)
VCL machen. Ich habe bereits gesucht. Und da ich bloß Strings austauschen will, wurde ich
hier fündig. Dieser Code funktioniert. Ich erhalte - innerhalb ein und desselben Programms - eine Zeichenkette mit Inhalt.
Ich habe nun versucht, das Ganze in 2 Programm zu splitten. Aber irgendwie kommt immer nur ein leerer String an:
Delphi-Quellcode:
const
MY_MESSAGE = WM_USER + 4242;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var
H : HWND;
txt : String;
begin
txt:= Edit1.Text;
SendMessage(FindWindow('TForm1', 'Packer'), MY_MESSAGE, 0, DWORD(PChar(txt)));
end;
und der Empfänger
Delphi-Quellcode:
Const
MY_MESSAGE = WM_USER + 4242;
Type
TForm1 = Class(TForm)
Memo1 : TMemo;
Private
Procedure GotMessage(Var Msg: TMessage); Message MY_MESSAGE;
End;
Var
Form1 : TForm1;
Implementation
{$R *.dfm}
Procedure TForm1.GotMessage(Var Msg: TMessage);
Var
MsgStr : PChar;
txt : String;
Begin
MsgStr:= PChar(msg.lParam);
Msg.Result:= 1;
ShowMessage(MsgStr); // exakt der gleiche Code - trotzdem leere Zeichenkette
With Memo1.Lines Do
Try
BeginUpdate;
txt:= String(MsgStr);
Add(txt);
Finally
EndUpdate;
End;
End;
Was mache ich falsch?