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

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

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

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

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

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

进程间一般利用 共用内存/文件 以及 套接字(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用法一样

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...