procedure TViForm.SendmsgToSticthForm(Msgstr: string);
vards:   TCopyDataStruct;
hd:   THandle;
//Inf: PSfyzxtInformation;begin
//
ds.cbData   :=   Length(Msgstr)+1;GetMem(ds.lpData,ds.cbData);   //为传递的数据区分配内存StrCopy (ds.lpData,PChar(Msgstr));Hd   :=   FindWindow(nil,Pchar('Sticth'));   //   获得接受窗口的句柄if   Hd   <>   0   thenSendMessage(Hd,WM_COPYDATA, 0,Cardinal(@ds))   //   发送   WM_COPYDATA消息else
ShowMessage('Fail send data to sticth');FreeMem(ds.lpData);   //释放资源end;

解决方案 »

  1.   

    这里有一套免费的控件,功能强大,专门满足程序间通讯。
    http://bak-o-soft.dk/Delphi/PBSharePack.aspx
      

  2.   

    FindWindow可能返回0,试试用全局变量保存FindWindow的值,而不是每次都去找
    或者改成Socket通讯吧
      

  3.   

    建议使用命令管道
    http://guanyue7613.blog.163.com/blog/static/885147420111074428261/
      

  4.   

    使用WM_COPYDATA方法进行程序之间的通讯还是有些问题,我已经用全局变量保存FindWindow的值了。但程序最小化时,两个程序还是通讯不了。所以我改用Socket通讯,用得还可以。没有出现过,通讯不正常的情况。
      

  5.   

    最小化的窗体收不到WM_COPYDATA消息!