消息发送的问题??????(50分)

  • 主题发起人 terminal_guo
  • 开始时间
T

terminal_guo

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
pCopyData: PCOPYDATASTRUCT;
kk: PChar;
MHandle: HWnd;
begin
kk := '123';
pCopyData.dwData := 102;
pCopyData.lpData := kk;
pCopyData.cbData := 3;
MHandle := FindWindow('TmyMain', PChar('Project1'));

if MHandle = 0 then
begin
ShellExecute(Handle, 'Open', PChar('c:/Project1.exe'), nil, nil, SW_SHOWNORMAL);
end;

SendMessage(MHandle, WM_COPYDATA, 0, Integer(pCopyData));
end;


以上为了发送一个传送信息的消息,将‘124’字符传送到另外一个程序里面,但是执行到sendmessage
就报一个系统什么错误,不知道怎么回事,有高手能不能帮忙看一下,谢谢了,,,,
 
那位大下给看看,多谢多谢阿,
 
两程序间的通讯不是这样做的!!
要用一些比较复杂的东西。

另:
sendmessage等待消息处理完以后才会返回
postmessage不等待消息处理
 
type
{ lParam of WM_COPYDATA message points to... }
PCopyDataStruct = ^TCopyDataStruct;
{$EXTERNALSYM tagCOPYDATASTRUCT}
tagCOPYDATASTRUCT = packed record
dwData: DWORD;
cbData: DWORD;
lpData: Pointer;
end;

是不是lpData不对啊?
 
同样类型的代码在c++ builder里面就可以执行啊,并且能够发这个消息给我的消息接受程序
,就是我把代码翻译成delphi的了以后就就出错,也不知道有什么不对,有没有用delphi做过
这样程序的,帮我指点以下,,
 
启动Project1.exe需要一段时间,应该等它启动起来以后在发消息,试试吧!
 
把kk变成全局变量试试. lpData没有分配内存,指向kk的地址,
而kk的地址离开此函数就无效了.
同样类型的代码在c++ builder里面就可以执行,我想也是侥幸那
块内存没有被更改.
 
将kk定义成全局变量还是出错阿,真不知道怎么了,我只不过想用delphi写个测试例子而已,其实
我已经用CB写好了发送程序了,有没有人用delphi做过的啊,麻烦帮我看看,谢谢了,
 
你的kk和PCopyStruct没有分配内存,先分配内存在操作就没问题了
 
多人接受答案了。
 
顶部