用Delphi程序接收C++代码sendmessage发送的WM_COPYDATA消息,使用vb接收正常,而用Delphi窗口却只能收到第一个字符,剩下的全都收不到。而Delphi接收Delphi程序sendmessage发送的WM_COPYDATA消息却可以正常接收,不知道是为什么,请高手指点迷津,多谢!!
发送消息的代码如下: COPYDATASTRUCT cds={0};
cds.lpData = (void *)lpApplicationName;
cds.cbData = 255;
res = SendMessage(FindWindow(NULL, "Form2"), WM_COPYDATA, GetCurrentProcessId(), (LPARAM)&cds);
接收消息的Delphi完整代码如下:unit Receiveunit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
private
{ Private declarations }
public
procedure Capturemessage(var CopyData:TWmCopyData);message WM_COPYDATA;
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Capturemessage(var CopyData:TWmCopyData);
begin
Edit1.text:=StrPas(CopyData.CopyDataStruct^.lpData);//接收数据获取数据并显示
end;end.
发送消息的代码如下: COPYDATASTRUCT cds={0};
cds.lpData = (void *)lpApplicationName;
cds.cbData = 255;
res = SendMessage(FindWindow(NULL, "Form2"), WM_COPYDATA, GetCurrentProcessId(), (LPARAM)&cds);
接收消息的Delphi完整代码如下:unit Receiveunit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
private
{ Private declarations }
public
procedure Capturemessage(var CopyData:TWmCopyData);message WM_COPYDATA;
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.Capturemessage(var CopyData:TWmCopyData);
begin
Edit1.text:=StrPas(CopyData.CopyDataStruct^.lpData);//接收数据获取数据并显示
end;end.
PChar(CopyData.CopyDataStruct^.lpData);试试