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. cassandra基本操作

    basic operate1. 创建keyspace基本语句:CREATE KEYSPACE <identifier> WITH <properties>案例:CREATE K ...

  2. Librepilot-Spark2固件的烧写

    1.通过USB连接Librepilot_Spark2飞控,启动Librepilot GCS地面站(博主的GCS是16.09版本),界面如下. 2.点击Firmware标签页,点击终止系统(若板子未带系 ...

  3. Linux RAID磁盘阵列

    RAID磁盘阵列 什么是RAID RAID是磁盘阵列的英文缩写,多块磁盘组成了一个组合,一起完成存储任务,就是磁盘阵列. RAID几种常用的类别(组合) RAID0:条带卷:最低磁盘个数2+,空间利用 ...

  4. Qualcomm_Mobile_OpenCL.pdf 翻译-5-性能优化的概述

    这章提供了一个OpenCL应用程序优化的总体概述.更多的细节将会在接下来的章节中找到. 注意:OpenCL程序的优化是具有挑战性的.相比初始的程序开发工作,经常需要做更多的工作. 5.1 性能移植性 ...

  5. java ArrayList迭代过程中删除

    第一种迭代删除方式: 第二种迭代删除方式: 第三种迭代删除: 第四种迭代删除: 第五种迭代删除: 第六种: ArrayList中remove()方法的机制,首先看源码: 真正的删除操作在fastRem ...

  6. 关于Python你不得不知道的Python语言特点

    首先什么是语言?什么是编程? 准确来说是:定义计算机程序的语言,用来向计算机发送指令 个人理解:   语言:是一种交流的工具或者方式.比如我们的汉语普通话.各地的方言.外语中的英语.俄语.日语等.我们 ...

  7. VM架构设计文档初稿v0.01

    VM架构设计文档初稿v0.01 文档介绍 本文档是经过讨论,作为VM新架构设计开发中的重要依据.对该架构的整个系统的结构进行详实细致的描述.阐述框架结构,说明该架构所采取的设计策略和所有技术,并对相关 ...

  8. shred命令

    不做陈冠希必备.... shred --help 用法:shred [选项]... 文件... Overwrite the specified FILE(s) repeatedly, in order ...

  9. 【Luogu5294】[HNOI2019]序列

    题目链接 题意 给定一个序列,要求将它改造成一个非降序列,修改一个数的代价为其改变量的平方. 最小化总代价. 另有\(Q\) 次询问,每次修改一个位置上的数.(询问之间独立,互不影响) Sol 神仙 ...

  10. C++在delete指针后要赋值为NULL

    C++标准规定:delete空指针是合法的,没有副作用. 所以我们在Delete指针后赋值为NULL或0是个好习惯.对一个非空指针delete后,若没有赋NULL,若再次delete的话 有可能出现问 ...