:8.373KB : :1 :2019-11-27 16:16:38
.子程序 进程通信_窗口方法_接收消息, , 公开,
.参数 参数_窗口句柄, 整数型, , 接收消息的窗口句柄,可用 取窗口句柄() 获得
.参数 参数_标志文本, 文本型, , 用来匹配消息是否为指定程序发送的,可以为任意文本(不能为空文本),且不要和系统中已有的冲突。设置不同的标志文本,可绑定不同的子程序。
.参数 参数_回调函数, 子程序指针, , 接收消息的回调函数,注意:这个函数有且只有一个参数(文本型),这个参数用来保存消息
发送:
1.将文本型的消息内容拆分成字节集类型
2.先取出字节集长度,使用PostMessage这个API发送给指定窗口
3.然后进行循环,一个一个字节的发给(也是使用PostMessage这个API)指定窗口
接收:
1.使用SetWindowLong为改窗口设置新的过程函数(就是窗口收到消息之后,我们的这个函数会先处理消息)
2.判断消息标识是不是我们设定的,如果是的话,进行相应处理。(一个一个的接收字节集,直到字节集长度等于一开始收到的指定长度)
3.一个一个字节集收到之后,将字节集转为文本型,调用我们设置的回调函数,把这个文本型数据当参数传送
4.最后使用CallWindowProc这个API,调用程序原来的消息处理函数(因为有的消息是程序本身的,比如点击一个按钮之类的,所以要把收到的消息传给程序用来的消息函数)
保证消息标识的唯一性是用RegisterWindowMessage这个API处理的,理论上可以实现一个程序和多个程序的通信。
程序本身也可以向自己发消息,这个方法的缺点显然易见,当数据量很大的时候,就显得效率太低了(一个字节一个字节发)。但是相比SendMessage,在大多数的时候,他比较稳定。
总而言之,发一些几十个字或者几百个字的文本型数据,应该是完全够用。需要的话,可以自己改成字节集等其它变量类型的通信。
02-17飓风填表模块例子,改自队长模块
02-17会员管理插件源码
02-17环形进度条,大恩环形模块
02-1613位EAN码批量生成,无任何模块
02-16全网汇编代码整理模块
02-16动态创建菜单与响应事件源码,菜单编辑器
10-03Excel中加载数据分析模块
11-01excel2016天机使用数据分析模块
09-07C++的string的实现源码分析