利用process.command实现进程间通信
By
admin
at 2021-10-23 • 0人收藏 • 925人看过
同一个软件里界面间操作一般是同一个进程内, 是进程内操作.
同一个软件多开后, 每个软件之间的界面操作是进程之间的, 是进程间操作.
进程内操作, 一般是线程之间的操作
进程间的操作和进程内不一样, 通信方式不一样.
进程间一般利用 共用内存/文件 以及 套接字(Socket)来进行交互.
共享内存/文件 有几种方式,
c++ 的dll, 共享全局变量
读写同一个文件(ini/text/注册表/剪切板)
至于套接字(socket), aardio中有Wsock(tcp,udp), webSocket, 还有zeromq通信
这种方式类似你 电脑上打开了多个qq ,它们之间发信息.
如果软件是你自己写的, 那么aardio中进程间通信还可以利用process.command, 这个相对于上面更简单点.
import win.ui; /*DSG{{*/ mainForm = win.form(text="aardio工程";right=364;bottom=440) mainForm.add( button={cls="button";text="send";left=10;top=192;right=354;bottom=247;z=2}; edit={cls="edit";left=11;top=13;right=354;bottom=180;edge=1;multiline=1;z=1}; edit2={cls="edit";left=10;top=264;right=353;bottom=431;edge=1;multiline=1;z=3} ) /*}}*/ import process.command; process.command.join("7BF1F82B-82B3-4D94-8984-F2FB29BA1E98"); var duihua = process.command(mainForm,true); duihua.fasong = function( ... ) { mainForm.edit2.appendText(...); } mainForm.button.oncommand = function(id,event){ process.command.post("fasong",mainForm.edit.text); } mainForm.show(); return win.loopMessage();
上面就是简单的多开, 软件之间的通信.
2 个回复 | 最后更新于 2021-10-25
登录后方可回帖
感觉用法和publish/subscribe差不多