利用API函数PostMessage的进程通信模块

易语言 2020-01-24 21:08:56

利用API函数PostMessage的进程通信模块

也是最近做一个项目用到的,不知道有没有相似的功能模块。如果有的话,就当是经验分享了
另外,有朋友发现这种方式的缺陷的话,也麻烦说一下。大家共同进步

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

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

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