`
isiqi
  • 浏览: 16072393 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

关于进程间互发信息

阅读更多

  想一想,在平时的处理程序的时候,我们都是在一个进程中进行处理,所以,在处理字符串的时候,我们都不用考虑太多的问题,处理什么样的数据和数据的发送都会在同一个进程中进行。

   但是,假如要你负责一个程序要在两个不同的进程中交换数据,你会怎么办,你要想怎样做,一般的做法是这样,自定义一个消息,然后你就把这个数据放在这个 消息附带的参数WPARAM wParam 与 LPARAM lParam 中,不过这样只能限于非字符串的传递,只能传递数字,或者你更聪明一点,把字符编码,然后在另一个进程中解码,这样可以做成伪字符的数据传递。

  不过,这样的方法都不错!

  我在开始的时候,使用了字符地址作为消息参数进行传递,可是由于进程间都是独立的4GB内存空间,当接到我的字符消息的时候,就程序就误以为是自已的进程空间的地址,所以就把读取了这个地址,一般结果来看,不是乱码就是空字符串。

  那么我们有什么方法可以在消息中进行字符串的传递呢?

  我们可以使用两个Windows的消息分别进行一个字符串的两个进程间的传递,

  一个消息是WM_SETTEXT。

  一个消息是WM_COPYDATA。

  以下我来分析这两个消息怎么实现,

  最简单的是使用WM_SETTEXT的消息了,这个方法只是使用一个字符串的地址作为一个消息参数就可以实现了两个不同进程间的消息的互发了。

  原因是因为这个消息会为这个字符串分配一个内存空间,在接收方就可以根据这个地址把这个字符串读取保存了


  在接收方这样处理消息:

  加入消息映射宏:


  加入消息映射函数:


  使用WM_COPYDATA:


  这样就可以实现了不同进程间两个字符串之间的互发!

  结束语:

  这只是一些简单的方法,对这些感兴趣的或需要源代码的朋友,可以跟我联系。

分享到:
评论

相关推荐

    C# 程序间通信(SendMessage方式)

    demo中两个窗体程序可以互发信息,可以在此基础上初步了解程序间通信的方法

    Windows环境下32位汇编语言程序设计 第2版(罗文斌) 完整光盘

    使用内存映射文件进行进程间数据共享 Chapter11\Dll\Dll ;最简单的动态链接库例子 - 编写 DLL Chapter11\Dll\MASM Sample ;最简单的动态链接库例子 - 使用 DLL Chapter11\Dll\VC++ Sample ;最简单的动态链接库例子 ...

    Windows环境下32位汇编语言程序设计(最新琢石成器版)附属光盘

    使用内存映射文件进行进程间数据共享 Chapter11\Dll\Dll ;最简单的动态链接库例子 - 编写 DLL Chapter11\Dll\MASM Sample ;最简单的动态链接库例子 - 使用 DLL Chapter11\Dll\VC++ Sample ;最简单的动态链接库...

    Windows环境下32位汇编语言程序设计_随书光盘

    使用内存映射文件进行进程间数据共享 Chapter11\Dll\Dll ;最简单的动态链接库例子 - 编写 DLL Chapter11\Dll\MASM Sample ;最简单的动态链接库例子 - 使用 DLL Chapter11\Dll\VC++ Sample ;最简单的动态链接库例子 ...

    Linux命令笔记

    9:lsof列出进程打开或使用的文件信息 语法: lsof [选项] 10:date 第六部分:服务管理 1:服务简介与分类 2:RPM包安装服务的管理 2.1:独立服务的管理 2.2:基于xinetd服务的管理 3:源码包安装服务管理 3.1:源码...

    《计算机操作系统》期末复习指导

    进程互斥体现了进程之间对资源的竞争关系,这时进程相互之间不一定清楚其它进程情况,往往指多个任务多个进程间的通讯制约,因而使用更广泛。如打篮球时双方挣抢篮板球等。 (2)临界区 并发进程中与...

    1345个易语言模块

    互 联网扩展模块1.1.ec 互联网扩展模块1[1].1.ec 五笔编码查询模块.ec 代码编辑器部分模块.ec 仿 vista截图.ec 仿WinXP窗口v3.1版.ec 仿XP界面3.0特别版模块 3.0.ec 仿XP窗口2.0.ec 仿 真shell库.ec 优化内存.ec ...

    1350多个精品易语言模块

    互 联网扩展模块1.1.ec 互联网扩展模块1[1].1.ec 五笔编码查询模块.ec 代码编辑器部分模块.ec 仿 vista截图.ec 仿WinXP窗口v3.1版.ec 仿XP界面3.0特别版模块 3.0.ec 仿XP窗口2.0.ec 仿 真shell库.ec 优化内存.ec ...

    C#微软培训资料

    2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 ...

    天路商务星CRM

    天路CRM是采用全球最新,最成熟的JAVA/J2EE平台开发的客户关系管理系统,采用B/S(浏览器/服务器)模式,可以在局域网和国际互连网环境中运行,具有极佳的开放性,移植性,可扩展性,便于二次开发。 天路CRM技术优势 1. ...

    黄山IE修复专家V7.70

    清除QQ自动发送信息病毒,黑客、蠕虫、木马病毒;可以修复经常性间隔一段时间就自动打开网页及还原被用户修复的IE等。特点:无需时时运行监测恶意代码,减少系统开销;无需提前备份,中了恶意网页及黑客木马病毒攻击...

    Windows环境下32位汇编语言程序设计(chm 罗云彬)

    4.3 窗口间的消息互发 4.4 实 验(1) 4.4 实 验(2) 4.4 实 验(3) 第5章 使用资源 5.1 菜单和加速键(1) 5.1 菜单和加速键(2) 5.1 菜单和加速键(3) 5.1 菜单和加速键(4) 5.1 菜单和加速键(5) 5.1 ...

Global site tag (gtag.js) - Google Analytics