火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
楼主: shuimiao
打印 上一主题 下一主题

[类库封装] [开源]水淼·进程通讯类 - 使用投递消息方式构建进程读写...

[复制链接]

371

主题

2259

帖子

7347

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7347
跳转到指定楼层
楼主
发表于 2024-3-10 19:28:31 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 shuimiao 于 2024-3-10 19:36 编辑

以前使用火山的命名管道功能,因为不能覆盖写数据,只能弃用。后来改为投递消息方式构建进程间的数据交互。前段时间看到有个火友也遇到命名管道不好用的问题,我就说过要把我的功能给封装出来分享,现在来了。

游客,如果您要查看本帖隐藏内容请回复


本类可以指定通道(也就是管道)的代码进入,相同通道的才能通信。必定有且只有一个主导方,其它多方可以与主导方通信。任何一方写数据,其它方都会收到读数据事件,读写数据可以传入数据名称用以区分不同类型的数据。

可以固定本程序是主导方或其它各方,如果主导方失联,则其它各方自动退出,如果主导方没有运行,其它各方也无法运行。




也可以自You主导方(就是谁先运行谁是主导方)。还可以后期强制变更主导方。如果主导方失联,则其它各方自动切换新主导方。





回复

使用道具 举报

371

主题

2259

帖子

7347

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7347
沙发
 楼主| 发表于 2024-3-10 22:05:23 来自手机 | 显示全部楼层
hrq520 发表于 2024-3-10 22:00
可以加入 仰望升级工具 套餐么:噜阿噜:噜阿噜:噜阿噜

我没用过仰望,这个看仰望自己加吧
回复

使用道具 举报

371

主题

2259

帖子

7347

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7347
板凳
 楼主| 发表于 2024-3-13 01:02:56 来自手机 | 显示全部楼层
wangvoldp 发表于 2024-3-12 23:11
写的不错哦,提点小建议哈, 仅供参考,
判断窗口是否被关闭用 IsWindow 是不是更好呢,
另外发送数据写到文件, ...

建议可以,如果卡住的话,肯定是只能读取到最新写入的数据。我觉得这个写数据,应该放在读数据事件下,判断对方是不是完成了某某数据的处理,处理了再自动写新数据,这样就不怕卡住导致数据不同步了。读写数据可以互相沟通的,数据是字节集,想包含什么指令和内容都行,还可以指定数据名称。发送消息容易卡住也影响效率肯定是不推荐的。不过共享内存的话确实也是个选择。不过一般不是很严格要求效率的话写文件的方式就可以了,简单粗暴不会内存泄露,类被销毁自动删除本地读写目录中的临时文件,也不会堆积文件浪费硬盘。后面我再研究下共享内存
回复

使用道具 举报

371

主题

2259

帖子

7347

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7347
地板
 楼主| 发表于 2024-3-13 10:37:46 来自手机 | 显示全部楼层
fengyishen 发表于 2024-3-13 04:24
水淼新作品吖,必须支持一下。这个可以用来执行CMD命令吗?

功能只是让不同进程互相交流数据,运行cmd什么的都是程序自己的事,想干嘛都可以
回复

使用道具 举报

371

主题

2259

帖子

7347

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7347
5#
 楼主| 发表于 2024-3-14 09:53:05 来自手机 | 显示全部楼层
fengyishen 发表于 2024-3-13 12:24
看介绍是自己的N进程通信,我的意思是,能像匿名管道运行cmd命令实时回显吗?如果可以,能否给个示例 ...

这需要两个程序都使用本类才能沟通。
cmd端输出重定向到本程序这属于winapi的操作了,除非你的cmd端也使用本类的写数据方法就能回传给主程序实时显示。
回复

使用道具 举报

371

主题

2259

帖子

7347

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7347
6#
 楼主| 发表于 2024-4-16 21:36:43 | 显示全部楼层
adrenminbi 发表于 2024-4-16 18:53
为真,则不管进程在哪个目录下运行的都能使用通道,否则只有同目录下的进程才能使用通道。  为真的情况没写 ...

全局通道写了代码。但例程只是用了非全局通道。你要测试全局通道,就自己修改传入参数,全局通道为真,重新编译程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-5-10 02:57 , Processed in 0.089363 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表