开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7705|回复: 28
收起左侧

[易语言模块源码] 利用API#PostMessage的进程通信模块

[复制链接]
结帖率:25% (1/4)
发表于 2019-1-4 20:42:02 | 显示全部楼层 |阅读模式   甘肃省兰州市
分享例程
界面截图:
备注说明: 利用Windows的API函数PostMessage达到进程通信的效果
本帖最后由 Peanut 于 2019-1-5 00:41 编辑

思路如下

发送:
1.将文本型的消息内容拆分成字节集类型
2.先取出字节集长度,使用PostMessage这个API发送给指定窗口
3.然后进行循环,一个一个字节的发给(也是使用PostMessage这个API)指定窗口

接收:
1.使用SetWindowLong为改窗口设置新的过程函数(就是窗口收到消息之后,我们的这个函数会先处理消息)
2.判断消息标识是不是我们设定的,如果是的话,进行相应处理。(一个一个的接收字节集,直到字节集长度等于一开始收到的指定长度)
3.一个一个字节集收到之后,将字节集转为文本型,调用我们设置的回调函数,把这个文本型数据当参数传送
4.最后使用CallWindowProc这个API,调用程序原来的消息处理函数(因为有的消息是程序本身的,比如点击一个按钮之类的,所以要把收到的消息传给程序用来的消息函数)

保证消息标识的唯一性是用RegisterWindowMessage这个API处理的,理论上可以实现一个程序和多个程序的通信。

程序本身也可以向自己发消息,这个方法的缺点显然易见,当数据量很大的时候,就显得效率太低了(一个字节一个字节发)。但是相比SendMessage,在大多数的时候,他比较稳定。
总而言之,发一些几十个字或者几百个字的文本型数据,应该是完全够用。需要的话,可以自己改成字节集等其它变量类型的通信


ProcessCommunication.zip (8.37 KB, 下载次数: 171)

评分

参与人数 1精币 +2 收起 理由
kyo9766 + 2 感谢分享,很给力!~

查看全部评分


友情提醒:请选择可信度高的模块,勿用未知模块,防止小人在模块内加入木马程序。【发现问题模块请到站务投诉】。
结帖率:88% (15/17)

签到天数: 28 天

发表于 2024-3-5 13:03:33 | 显示全部楼层   广东省深圳市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

发表于 2023-5-10 11:46:11 | 显示全部楼层   广西壮族自治区南宁市
        感谢分享,很给力
回复 支持 反对

使用道具 举报

发表于 2022-10-5 22:02:40 | 显示全部楼层   广东省广州市
111111111111
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 1 天

发表于 2022-8-10 08:25:28 | 显示全部楼层   广东省深圳市
接收:
1.使用SetWindowLong为改窗口设置新的过程函数(就是窗口收到消息之后,我们的这个函数会先处理消息)
2.判断消息标识是不是我们设定的,如果是的话,进行相应处理。(一个一个的接收字节集,直到字节集长度等于一开始收到的指定长度)
3.一个一个字节集收到之后,将字节集转为文本型,调用我们设置的回调函数,把这个文本型数据当参数传送
4.最后使用CallWindowProc这个API,调用程序原来的消息处理函数(因为有的消息是程序本身的,比如点击一个按钮之类的,所以要把收到的消息传给程序用来的消息函数)

保证消息标识的唯一性是用RegisterWindowMessage这个API处理的,理论上可以实现一个程序和多个程序的通信。

程序本身也可以向自己发消息,这个方法的缺点显然易见,当数据量很大的时候,就显得效率太低了(一个字节一个字节发)。但是相比SendMessage,在大多数的时候,他比较稳定。
总而言之,发一些几十个字或者几百个字的文本型数据,应该是完全够用。需要的话,可以自己改成字节集等其它变量类型的通信
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 1 天

发表于 2022-8-10 08:24:53 | 显示全部楼层   广东省深圳市
思路如下

发送:
1.将文本型的消息内容拆分成字节集类型
2.先取出字节集长度,使用PostMessage这个API发送给指定窗口
3.然后进行循环,一个一个字节的发给(也是使用PostMessage这个API)指定窗口
回复 支持 反对

使用道具 举报

发表于 2022-8-6 22:43:19 | 显示全部楼层   海南省文昌市
大佬66666666
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)
发表于 2022-8-6 20:38:07 | 显示全部楼层   河南省周口市
支持支持支持支持支持支持支持支持支持支持
回复 支持 反对

使用道具 举报

发表于 2022-5-12 13:28:43 | 显示全部楼层   广东省*
笑嘻嘻笑嘻嘻笑嘻嘻笑嘻嘻笑嘻嘻笑嘻嘻笑嘻嘻笑嘻嘻系
回复 支持 反对

使用道具 举报

签到天数: 10 天

发表于 2022-3-31 08:42:21 | 显示全部楼层   河南省郑州市
SetWindowLongSetWindowLong
回复 支持 反对

使用道具 举报

结帖率:100% (29/29)

签到天数: 18 天

发表于 2022-3-7 09:34:22 | 显示全部楼层   四川省成都市
感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表