我有两个应用程序,它们通过消息进行通信,如果我运行这两个编译后的exe,一切都按预期工作。但是当我从Delphi IDE(BDS2006,尝试了Delphi 7没有成功)运行(调试)发送者时,SendMessage不会发送任何东西。
看起来IDE阻止向其他应用程序发送消息。我在Win7 64位和Borland 2006上使用WM_COPYDATA。
有什么想法吗?
发送者:
procedure TForm1.Button1Click(Sender: TObject);
var dst: THandle;
stringToSend : string;
copyDataStruct : TCopyDataStruct;
begin
stringToSend := 'Hello';
copyDataStruct.dwData := 0; //use it to identify the message contents
copyDataStruct.cbData := 1 + Length(stringToSend) ;
copyDataStruct.lpData := PChar(stringToSend) ;
SendData(copyDataStruct) ;
end;
procedure TForm1.SendData(const copyDataStruct: TCopyDataStruct) ;
var
receiverHandle : THandle;
res : integer;
begin
receiverHandle := findwindow( pchar('TForm2'), pchar('Form2') );
if receiverHandle = 0 then
begin
ShowMessage('CopyData Receiver NOT found!') ;
Exit;
end;
res := SendMessage(receiverHandle, WM_COPYDATA, Integer(Handle), Integer(@copyDataStruct)) ;
end;
end.
接收器部分:
TForm2 = class(TForm)
private
procedure WMCopyData(var Msg: TWMCopyData ); message WM_COPYDATA;
public
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
{ TReceiver }
procedure TForm2.WMCopyData( var Msg: TWMCopyData );
begin
ShowMessage( 'Received' );
end;