吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1195|回复: 6
收起左侧

[已解决] 像everything的命令行功能是如何实现的?-进程通信

 关闭 [复制链接]
onlyclxy 发表于 2024-3-11 20:16
本帖最后由 onlyclxy 于 2024-3-11 22:12 编辑

经常会好奇,比如输入everything -filename C:\123 这种,会在everything上的搜索栏出现"C:\123"
或者右键菜单,搜索everything,会搜索这个路径,,已经存在的窗口会更新这个路径.

像这种进程通信可能是如何实现的?
自己猜的话 , 可能是每次运行一个everything的程序, 然后发现已经存在有everything窗口话, 把命令行参数传递给已经存在的窗口.
但是这样子感觉会频繁的去启动关闭exe把. 要是有大量的传入命令. 会不会I/O卡死?
我也不知道我猜的对不对
(之前和别的大佬探讨的是. 如果是上面这样的话, 至少exe不能太大. 要不然exe好几十M, 每次打开额外开销肯定得不小 )
不过像他们这种程序. 可能实现的方案是这样的吗 或者是还会有哪些?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

冥界3大法王 发表于 2024-3-11 20:24
而且人家还有一个服务,估计是为了提升执行权限和调用效率吧。

免费评分

参与人数 1吾爱币 +1 收起 理由
onlyclxy + 1 用心讨论,共获提升!

查看全部评分

yes2 发表于 2024-3-11 21:17
可能是每次运行一个everything的程序, 然后发现已经存在有everything窗口话, 把命令行参数传递给已经存在的窗口

我认为你这个猜测是正确的。
但是这样子感觉会频繁的去启动关闭exe把. 要是有大量的传入命令. 会不会I/O卡死?

如果你频繁打命令行的话,确实会频繁启动exe,但是你的担忧是没有必要的。启动并判断是否已经存在,这样的操作并不会占用太多资源。而且已经存在的进程,他的模块都是已经加载过了,系统会优先映射到相同的地址,不需要重新读取PE模块。
至于具体的进程通讯方式是什么就没探究过了,以这个交互模式来看用WM_COPYDATA就够了

免费评分

参与人数 1热心值 +1 收起 理由
onlyclxy + 1 非常感谢!!!

查看全部评分

flyer_2001 发表于 2024-3-11 21:45
本帖最后由 flyer_2001 于 2024-3-11 21:47 编辑

不会启动多次,启动一个实例够了,如果传入路径后,该路径下文件足够多,在读取过程中再次传入新的参数,会卡死的,但卡死的不是因为传入命令,而是执行命令没结束

免费评分

参与人数 1热心值 +1 收起 理由
onlyclxy + 1 听起来特别有道理!!!

查看全部评分

MarioCrane 发表于 2024-3-11 21:45
everything在启动时会创建一个类名叫"EVERYTHING_TASKBAR_NOTIFICATION"的窗口,后续可以通过向这个窗口SendMessage WM_COPYDATA的方式来传递数据。具体实现方式可以看Everything SDK其中ipc部分的源码

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
onlyclxy + 1 + 1 相当干货了!!!

查看全部评分

 楼主| onlyclxy 发表于 2024-3-11 22:10
冥界3大法王 发表于 2024-3-11 20:24
而且人家还有一个服务,估计是为了提升执行权限和调用效率吧。

这个服务我知道. 正巧前一阵知乎上见人说到这个.
至少有一部分原因是 windows的uac.  说是有的需要权限的操作,会频繁弹出uac. 如果注册服务的话. 只需要第一次过uac. 就获得了免死金牌.. 后面的这个服务下的操作, 就都不会弹uac了.
weipohai 发表于 2024-3-12 07:33
思路很重要,早期用winrar写bat,调自带任务计划定期执行进行备份,算好时间差,再用bat执行ftp上传,次日检查。这是十几年前我做过最省成本的远端源码备份。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 16:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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