qt收发windows消息(不同进程之间)

2022年7月8日 13点热度 0人点赞

本文介绍不同qt进程间发送windows消息

0qt收发windows消息(同进程不同窗口)

工具/原料

  • qt

testDlg1-自定义消息

  1. 1

    testDlg1还是和“qt收发windows消息(同进程不同窗口)”中的代码一致。这里注意使用它的发送按钮的功能

    为了区分不同进程窗口的名称,这里修改一下查找窗口的窗口名为“acceptWnd”

    END

testDlg2-自定义消息

  1. 1

    在testDlg2中,修改窗口的名称为“acceptWnd”

  2. 2

    testDlg2主要用来接收和解析消息

    END

运行-自定义消息

  1. 1

    分别运行testDlg1和testDlg2,在testDlg2的接收消息的函数中添加断点,然后点击testDlg1的发送按钮

  2. 2

    进入断点调试,发现可以捕获到该自定义消息,但是对应的消息体数据值却获取不到。如果在testDlg1的发送函数中添加断点,会发现,在testDlg1中结构体数据对应的指针,与testDlg2中收到的结构体数据对应的指针是相同的,但是数据却未定义。

    这是因为在同一个进程中,发送消息,同一指针地址对应的数据是相同的。对于不同进程,同一指针地址对应的数据有可能是不同的

    END

testDlg1-WM_COPYDATA

  1. 1

    进程间如果通过发现消息的方式,实现进程通信呢?直到看到以下一段话(在此对这段话的作者表示感谢),需要发送WM_COPYDATA消息来实现进程间的通信

  2. 2

    对应发送函数修改如下。发送的消息为WM_COPYDATA,对应的数据为COPYDATASTRUCT类型,其中dwData中设置为用户自定义消息,lpData为发送的数据,cbData为发送数据的长度

    END

testDlg2-WM_COPYDATA

  1. 1

    接收函数修改如下

    END

运行-WM_COPYDATA

  1. 1

    运行后,可以发现testDlg2的窗体,可以正常接收和解析testDlg1发送的消息

    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部

laozhao

这个人很懒,什么都没留下

文章评论