打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
通过消息跨进程发送与接收 TCopyDataStruct 数据

问题来源: http://www.cnblogs.com/del/archive/2009/10/09/1579614.html#1779614

这几天家有病人, 几天没上网了; 看到这个问题我会, 顺便回复了.

发送代码:
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    Button1: TButton;    Edit1: TEdit;    procedure Button1Click(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var  h: HWND;  Size: Integer;  CopyDataStruct: TCopyDataStruct;begin  h := FindWindow(nil, '接收窗口'); { 按标题查找目标窗口 }  if h > 0 then  begin    Size := ByteLength(Edit1.Text) + 2{ 多出的两个字节用于后面的 #0 }    CopyDataStruct.lpData := PChar(Edit1.Text + #0); { 要发送的字符串, #0 表示 PChar 结束}    CopyDataStruct.dwData := WM_COPYDATA;            { 指定消息类型 }    CopyDataStruct.cbData := Size;                   { 指定要发送的数据的大小 }    SendMessage(h, WM_COPYDATA, 0, Integer(@CopyDataStruct)); { 发送 }  end;end;end.

接收代码:
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    Memo1: TMemo;    procedure FormCreate(Sender: TObject);  private  protected    procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;  public  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin  Caption := '接收窗口';end;procedure TForm1.WMCopyData(var Message: TWMCopyData);begin  Memo1.Lines.Add(PChar(Message.CopyDataStruct.lpData));end;end.

该代码已在 Delphi 2010 下测试过了.

发现 skymesh 朋友对消息操作不是太熟, 顺便告知个小技巧(其实博客中可能早提到过):
在 TForm1 = class(TForm) ... end; 中执行 Ctrl+空格;
然后输入: wm...(譬如本例输入 wmcopyd 即可) 后回车;
接着执行 Ctrl+Shift+C, 会自动完成上面大部分的消息代码.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
WebBrowser组件和MSHTML 在Delphi中的使用
rdp delphi实现远程桌面
Delphi 中使长循环有响应
Delphi的图形处理(一)
delphi多线程编程
DelPhi2007 中 使用Indy 的TCP连接教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服