利用process.command实现进程间通信

By admin at 2021-10-23 • 0人收藏 • 235人看过

同一个软件里界面间操作一般是同一个进程内, 是进程内操作.

同一个软件多开后, 每个软件之间的界面操作是进程之间的, 是进程间操作.

进程内操作, 一般是线程之间的操作

进程间的操作和进程内不一样, 通信方式不一样.

进程间一般利用 共用内存/文件 以及 套接字(Socket)来进行交互.

共享内存/文件 有几种方式,

  1. c++ 的dll, 共享全局变量

  2. 读写同一个文件(ini/text/注册表/剪切板)

至于套接字(socket), aardio中有Wsock(tcp,udp), webSocket, 还有zeromq通信

这种方式类似你 电脑上打开了多个qq ,它们之间发信息.

如果软件是你自己写的, 那么aardio中进程间通信还可以利用process.command, 这个相对于上面更简单点.

image.png

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
2021-10-24   #1

感觉用法和publish/subscribe差不多

2021-10-25   #2

回复#1 @jerryxjr1220 :

严格来说, 和thread.command用法一样

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前在学aardio+halcon机器视觉.
AARDIO语言QQ群:70517368
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
C大Aardio论坛:Aar爱好者论坛
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
赞助商:才仁机械




Loading...