http://www.delphitop.com/html/wangluo/1529.html

delphi 进程通讯之WM_COPYDATA 发送程序(SendData.exe)

作者:admin 来源:未知 日期:2011/4/5 0:07:13 人气:1199 标签:

进程通讯之WM_COPYDATA 发送程序(SendData.exe):

unit SendUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFrmSend = class(TForm)
BtnSend: TButton;
procedure BtnSendClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmSend: TFrmSend;
implementation
{$R *.dfm}
{ TFrmRecv }
procedure TFrmSend.BtnSendClick(Sender: TObject);
var
_vMsg : string;
i, _vLen : Integer;
_vBuf : array of Char;
_vCopyData : TCopyDataStruct;
_vHandle: THandle;
begin
_vMsg := '我是来自另外一个进程的消息!';
_vLen := Length(_vMsg);
SetLength(_vBuf, _vLen);
for i := 0 to _vLen - 1 do
_vBuf[i] := _vMsg[i + 1];
_vCopyData.dwData := 100;
_vCopyData.cbData := _vLen;
_vCopyData.lpData := _vBuf;
_vHandle := FindWindow('TFrmRecv', '接收程序');
if _vHandle <> 0 then
SendMessage(_vHandle, WM_COPYDATA, 0, longint(@_vCopyData));
end;
end.

接收程序(RecvData.exe):

unit RecvUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFrmRecv = class(TForm)
private
{ Private declarations }
procedure RecvMessage(var aMsg: TWMCOPYDATA); message WM_COPYDATA;
public
{ Public declarations }
end;
var
FrmRecv: TFrmRecv;
implementation
{$R *.dfm}
{ TFrmSend }
procedure TFrmRecv.RecvMessage(var aMsg: TWMCOPYDATA);
var
_vBufLen : Integer;
_vBuf : array of Char;
i : Integer;
_vStr : string;
begin
if aMsg.CopyDataStruct^.dwData = 100 then
begin
_vBufLen := aMsg.CopyDataStruct^.cbData;
System.SetLength(_vBuf, _vBufLen);
Move(aMsg.CopyDataStruct^.lpData^, _vBuf[0], _vBufLen);
_vStr := '';
for i := 0 to _vBufLen - 1 do
_vStr := _vStr + _vBuf[i];
ShowMessage('Len: ' + IntToStr(_vBufLen) + ' ' + _vStr);
end;
end;
end. 

delphi 进程通讯之WM_COPYDATA 发送程序(SendData.exe) 可用的更多相关文章

  1. QSharedMemory共享内存实现进程间通讯(IPC)及禁止程序多开

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSharedMemory共享内存实现进程间通讯(IPC)及禁止程序多开     本文地址:h ...

  2. android中跨进程通讯的4种方式

    转自:http://blog.csdn.net/lyf_007217/article/details/8542359 帖子写的很好.看来一遍,试了一遍,感觉太有意义.必须转过来! android中跨进 ...

  3. Delphi实现获取句柄并发送消息的方法(FindWindow、FindWindowEx、EnumChildWindows、SendMessage)

    Delphi实现获取句柄并发送消息的方法 本文以实例形式详细说明了Delphi获取句柄并发送消息的方法,具体用法说明如下: 查找另外一个窗口的句柄: handle := FindWindow(nil, ...

  4. unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL - 用于本地内部进程通讯的套接字。

    SYNOPSIS(总览) #include <sys/socket.h> #include <sys/un.h> unix_socket = socket(PF_UNIX, t ...

  5. v77.01 鸿蒙内核源码分析(消息封装篇) | 剖析LiteIpc(上)进程通讯内容 | 新的一年祝大家生龙活虎 虎虎生威

    百篇博客分析|本篇为:(消息封装篇) | 剖析LiteIpc进程通讯内容 进程通讯相关篇为: v26.08 鸿蒙内核源码分析(自旋锁) | 当立贞节牌坊的好同志 v27.05 鸿蒙内核源码分析(互斥锁 ...

  6. v78.01 鸿蒙内核源码分析(消息映射篇) | 剖析LiteIpc(下)进程通讯机制 | 百篇博客分析OpenHarmony源码

    百篇博客分析|本篇为:(消息映射篇) | 剖析LiteIpc(下)进程通讯机制 进程通讯相关篇为: v26.08 鸿蒙内核源码分析(自旋锁) | 当立贞节牌坊的好同志 v27.05 鸿蒙内核源码分析( ...

  7. android 史上最简单易懂的跨进程通讯(Messenger)!

    不需要AIDL也不需要复杂的ContentProvider,也不需要SharedPreferences或者共享存储文件! 只需要简单易懂的Messenger,它也称为信使,通过它可以在不同进程中传递m ...

  8. Chris Richardson微服务翻译:构建微服务之微服务架构的进程通讯

    Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯(本文) 微服务架构中的服务发现 微服务之事件驱动的数据管理 微服 ...

  9. Android为TV端助力 史上最简单易懂的跨进程通讯(Messenger)!

    不需要AIDL也不需要复杂的ContentProvider,也不需要SharedPreferences或者共享存储文件! 只需要简单易懂的Messenger,它也称为信使,通过它可以在不同进程中传递m ...

随机推荐

  1. java基本类型和包装类型的区别

    Java的类型分为两部分,一个是基本类型(primitive),如int.double等八种基本数据类型: 另一个是引用类型(reference type),如String.List等.而每一个基本类 ...

  2. Linux-定时任务排查

    前段时间,哥们的服务器被人反弹了shell,由于反弹的地址不可达,系统总是会发送一条mail邮件到root账户,导致入侵行为被发现,由于反弹的动作是通过crontab来定时执行的,所以来梳理下cron ...

  3. linux打印彩色输出

    在终端生成彩色输出,我们可以使用转义序列来实现. 每种颜色都有对应的颜色码.比如:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37 要打印彩色文 ...

  4. PCRE does not support \L, \l, \N{name}, \U, or \u...

    PCRE does not support \L, \l, \N{name}, \U, or \u... 参考文章:YCSUNNYLIFE 的 <php 正则匹配中文> 一.报错情景: 使 ...

  5. SpringMVC 中的注解@RequestParam与@PathVariable的区别

    @PathVariable绑定URI模板变量值 @PathVariable是用来获得请求url中的动态参数的 @PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上.//配置 ...

  6. DevExpress v19.1新版亮点——WinForms篇(四)

    行业领先的.NET界面控件DevExpress v19.1终于正式发布,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WinForms v19.1中新增的一些控 ...

  7. sevlet

    https://blog.csdn.net/Mithrandir_One/article/details/52900425 大家现在做的比较多的基本上就是 web 应用.所以一定要把 sevlet 及 ...

  8. github readme 添加图片预览

    ![img](https://github.com/lanshengzhong/mina_alan/blob/master/screenshot/2.gif) ![图片加载失败的时候就会显示这段话]( ...

  9. 百度地图api的简单应用(一):POI检索

    使用之前,需要注册一个百度地图开发者账号,最好申请一个认证以获取更高的使用配额和并发上限. 注册之后,申请一个应用,获得一个ak(密钥),并填写ip地址白名单.(这里我使用0.0.0.0/0,查了自己 ...

  10. JAVA笔记28-正则表达式(补充、不重要)

    一.Greedy(贪婪的)尽可能多的匹配,Reluctant(不情愿的)尽可能少的匹配.Possessive(独占的)不常用. Greedy 数量词 X? X,一次或一次也没有 X* X,零次或多次 ...