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. GDAL支持中文路径和Shp文件中文属性写入

    在使用GDAL的过程中,为了支持中文,比需手动进行中文路径的设置,同时特别是在对Shp的属性进行中文输入的时候,都必须进行必要的设定. 为了支持中文路径,在注册了驱动之后,加上第三句就可以了.必须设置 ...

  2. vue修改富文本中的元素样式

    富文本编辑器目前应用很广泛,而有时候我们想要对其中的一些元素的样式进行修改,就会遇到问题. 首先,直接修改是不可行的,因为是用v-html标签进行渲染的,无法直接获取到. 在修改的时候,一般是按标签进 ...

  3. Java基本的程序结构设计 基本类型的输入输出

    读取输入: java.util.Scanner 一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器. 了解: Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹 ...

  4. Excel筛选操作

    Excel的筛选操作如下: 选中指定列: 点击"开始"中的"排序和筛选" 点击如下小三角即可按条件进行筛选

  5. Python实例31[批量对目录下文件重命名]

    经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名:例如: 修改前:[大家网]Mac OS X for Uni ...

  6. 一些项目中用到的php函数

    #不为空 if (!empty($_POST)) { } #生成随机数 mt_rand(,)产生999-9999范围间的随机数

  7. 《Head First 软件开发》阅读六

    软件错误:专业排错 你编写的代码,你的责任.处理错误的方法和其他流程一样,准备好白板.让客户参与.满怀信心的估计.重构与预构. 首先是与客户加强沟通,不管是谁的代码,在自己的系统里就是自己的代码.使代 ...

  8. MySQL知识总结(缓存)

    1.缓存机制概念 缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql.如果表更改了,那么使用这个表的所有缓冲查询将不再有效,查 ...

  9. 签发的用户认证token超时刷新策略

    https://segmentfault.com/a/1190000014545422

  10. Django对中间件的调用思想、csrf中间件详细介绍、Django settings源码剖析、Django的Auth模块

    目录 使用Django对中间件的调用思想完成自己的功能 功能要求 importlib模块介绍 功能的实现 csrf中间件详细介绍 跨站请求伪造 Django csrf中间件 form表单 ajax c ...