Windows使用自定义消息实现进程之间通信
        Windows程序与其它类型程序的区别就是使用消息,例如键盘或鼠标消息等,在dos系统下的程序没有定义消息。在windows操作系统中,消息不但可以用于进程内的通信,也可以用于进程间的通信。而我这篇博文将讲使用自定义消息实现进程间的通信。
        我们都知道,在windows中消息分为两种,即系统消息和用户自定义消息,系统消息定义从0到0x3ff,可以使用0x400到0x7fff定义自己的消息。windows把0x400定义为WM_USER,如果想定义自己的一个消息,可以在WM_USER上加上一个值。当然了,还有另外一种方法,这里就不讲了,而是使用RegisterWindowsMessage()函数。
        要想用消息实现进程间通信,则需要在这两个程序中定义或注册相同的消息,才能保证数据通信顺利进行。
  使用这种方式实现进程间通信,但是传送的数据只能是长整型的数据,不能是字符串。所以这个就是这种方式的局限。
定义完消息之后,可以使用如下的方法来发送消息:
Pwnd->SendMessage(WM_USER+0x401, NULL, (LPARAM)Msg)
参数代表的含义,在此就不多费口舌了,可以查阅MSDN。
好了,废话不多说,上代码:
SendDlg:
afx_msg LRESULT OnUserSendMsg(WPARAM wParam, LPARAM lParam); // 自定义的消息
BEGIN_MESSAGE_MAP(CSendDlgDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_MESSAGE(WM_STRSEND, OnUserSendMsg) //}}AFX_MSG_MAP ON_BN_CLICKED(IDOK, &CSendDlgDlg::OnBnClickedSendMsg) END_MESSAGE_MAP()
// // 发送数据 LRESULT CSendDlgDlg::OnUserSendMsg(WPARAM wParam, LPARAM lParam) { UpdateData(); // 更新数据 CWnd *pWnd = CWnd::FindWindow(NULL, _T("RecvDlg")); if (pWnd == NULL) { AfxMessageBox(_T("无法找到接收窗口")); return 0; } UINT uMsg; uMsg = atoi(m_strSend); pWnd->SendMessage(WM_STRSEND, NULL, (LPARAM)uMsg); // 发送消息 return 0; }
RecvDlg类似,此处提供完整的项目工程下载地址(注:项目工程使用vs2008 sp1建立的,如果使用别的vs版本,可能会出错)。
由于只能发送长整形的数据,所以,在程序中,你只能输入数字字符,而不能发送其它非数字字符。

单击这里下载演示工程

转载于:https://www.cnblogs.com/JPAORM/archive/2011/09/16/2509878.html

Windows使用自定义消息实现进程之间通信相关推荐

  1. python—多进程之进程之间通信

    一.Queue 1.导入:from multiprocessing import Queue 2.进程间数据通信之Queue示意图: mq.put(i) 子进程1发送数据到队列Queue中,子进程2和 ...

  2. 使用命名管道进程之间通信(转)

    原文地址:http://www.cnblogs.com/yukaizhao/archive/2011/08/04/system-io-pipes.html 命名管道: 命名管道的功能比匿名管道更强大, ...

  3. 为什么无名管道只能用于具有亲缘关系的进程之间通信

    作业: 个人理解: 因为亲缘关系的进程之间共享文件描述符,而无名管道文件也是一个文件,可以通过文件描述符进行通信. 而非亲缘关系的进程之间不共享文件描述符,所以不能使用无名管道进行通信.

  4. 进程之间通信 共享内存

    命令 ipcs 命令查看共享内存.消息队列.管道等相关信息 ipcs -m 查看共享内存的信息 代码 创建共享内存 共享内存 关联 进程 分离共享内存 删除共享内存 #include <sys/ ...

  5. Linux进程之间通信 信号

    2) SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程. 3) SIGQUIT 和SIGINT类似, 但由QUIT字符 ...

  6. Electron主进程和渲染进程之间通信

    Electron发送和接收数据用到的是 ipcMain 和 ipcRenderer 两个对象: ipcMain 是用在主进程中的: ipcRenderer 是用在渲染进程中的. 主进程用win.web ...

  7. Linux进程之间通信 消息队列

    使用命令 ipcs -q  查看对应的消息队列 代码 文件接收者 #include <sys/types.h> #include <stdio.h> #include < ...

  8. Linux 进程及进程之间的通信机制——管道

    参考: LInux C编程从初学到精通 电子工业出版社 Linux 进程 Linux 进程简介 Linux是一个多用户多任务的操作系统,多用户是指多个用户可以在同一时间使用同一台计算机系统:多用户是指 ...

  9. python之并发编程-进程之间的通信

    进程之间的通信 互斥锁 进程之间数据不共享,但共享同一套文件系统,或同一个打印终端是没有问题的.但共享导致了竞争,若不加以控制就会造成错乱.如下: from multiprocessing impor ...

最新文章

  1. matlab蚁群算法 路径规划,基于蚁群算法的机器人路径规划MATLAB源码
  2. C提高_day03_const小专题
  3. 以太坊搭建,不能使用puppeth 创建初始块,报错Fatal: Failed to write genesis block: unsupported fork ordering: eip15
  4. Python单元测试之unittest
  5. web前端技巧-文本如何垂直居中?多行文本如何实现上下居中?
  6. 全志A33-BootLoader的两个阶段:boot0和second boot
  7. 看以色列话剧《安魂曲》(图)
  8. c语言程序设计常用语句格式,全国计算机考试二级C语言程序设计要求
  9. edHat linux光盘引导,[原]个性化Linux发行版光盘之补充——XZ(LZMA算法)
  10. js保存html页面的图片,html使用js截取页面保存为图片
  11. Hash魔法:一致性 hash 算法
  12. Java基础-异常-throws Exception-抛声明
  13. Excel对话框大全
  14. 问题十九:怎么模拟ray tracing中漫射材料球体的颜色(diffuse materials)
  15. mysql批量插入优化
  16. php改变文件模式的函数,php chmod 函数 改变文件模式
  17. RemoteDesktopManager和微软远程桌面管理器RDCman
  18. 冰川时代4中英台词全集
  19. 数据分析报告结构规范设计
  20. python unrar问题_python利用unrar实现rar文件解压缩

热门文章

  1. Windows命令行提取日期时间
  2. Java Map遍历方式的选择
  3. linux命令——scp 两台linux机器间文件或目录传输
  4. 路由器setup模式
  5. 【孤偏盖全唐】Linux中find命令完整用法
  6. 0基础小白都说简单!10秒做好酷炫图表,可视化工具帮了大忙
  7. BI分析受阻?FineBI推出SPA螺旋式分析新功能!
  8. 报表软件公司悬赏 BUG,100块钱1个的真实用意
  9. html 修改坐标时间,牛顿:时间是人类的错觉,爱因斯坦:时间只是能更改的坐标...
  10. c语言如何写地图,自己用C语言写的扫雷地图