项目主页在这里 CommandTrayHost,二进制在这里
1
hljjhb 2017-11-28 20:07:02 +08:00
挺实用的小工具
|
2
h4lbhg1G OP 终于有人回复了!
本身程序也很小,静态编译的不到 700k,没有 VC++运行库要求。之前使用批处理来做启动,然后发现了 phuslu/taskbar,结果就花了大约一天时间在那个上面改成现在这个。实际上还有那个项目的部分残余代码没有清理。 |
3
Cannikin 2017-11-28 20:29:16 +08:00 via Android
很棒!收藏了!
|
4
loading 2017-11-28 20:34:16 +08:00 via Android
能不能做到菜单项目对应命令行是通过 ini 文件配置的。(我用手机,没试用。)
做到便于配置。 当然,ahk 也能很容易做出来。 总之,start +1 |
5
loading 2017-11-28 20:35:34 +08:00 via Android
看了一下说明,json 配置,赞!
|
6
brightguo 2017-11-28 20:55:01 +08:00
|
7
cuit4017 2017-11-28 21:00:11 +08:00 via Android
已 star
|
8
h4lbhg1G OP 主要是想要托管子进程,隐藏和显示子进程窗口。主进程退出(奔溃),杀掉所有子进程。我是除了那些会写的很爽的以外,尽量全部用 Windows API 实现,所以会小一点。比如 PathCombine PathFileExists ZeroMemory 等 API。
|
9
qzbysh 2017-11-28 21:09:20 +08:00
这下可以抛弃 VBScript 啦
|
10
LPeJuN6lLsS9 2017-11-28 21:53:27 +08:00
为啥是个 python 图标;还有很不便的一点:控制台 show 出来就得用托盘菜单隐藏,不然关闭窗口就再也出不来了
|
11
h4lbhg1G OP @hantsuki 嗯 关闭就是被杀掉了,这个可以用进程管理里面看到,必须用菜单隐藏。图标是暂时的,目前用的是之前项目 phuslu/taskbar 的
|
12
LPeJuN6lLsS9 2017-11-28 22:02:05 +08:00
@h4lbhg1G 这个改进一下难度高吗,如果能改进实用度会提升很多啊
|
15
hubhub 2017-11-28 23:09:26 +08:00 via Android
恕我直言,这东西是做什么用的,我看半天没看明白啊,能不能说的明白一点
|
16
lozzow 2017-11-28 23:19:53 +08:00 via Android
这几天正想找个类似的程序,太感谢了
|
17
LPeJuN6lLsS9 2017-11-28 23:20:21 +08:00
@h4lbhg1G 可以,我明天试试……
|
18
wwqgtxx 2017-11-29 00:04:25 +08:00 via iPhone
建议支持一下以管理员权限启动应用的功能,虽然可以用 powershell verb runas 来实现,但还是希望能更人性化一点
|
19
xuanyuanaosheng 2017-11-29 09:03:50 +08:00 via Android
正在用
|
21
lirener 2017-12-07 09:56:34 +08:00
先留名 后编辑 占前排 (回头汇报测试结果)
|
22
lirener 2017-12-07 10:17:44 +08:00
好吧才知道回复了不能编辑 简单的测试了一下 弱弱的问一下 有老板键吗?就是和 QQ 一样 一键呼出然后再隐藏的
只要一键呼出所有 再按一下热键隐藏所有 一个热键模拟点击托盘的操作就行了……可以吗 类似工作室多开查看游戏一样 但是我基本也是操作控制台 cmd 用 然后要是可以在设置里面加入不一键呼出的开关就更好了 比如可能不想被一键呼出的可以设置个 on/off |
23
Akkuman 2018-01-21 16:08:12 +08:00 via Android
|
24
h4lbhg1G OP |
25
brightguo 2018-01-21 17:01:23 +08:00
|
26
brightguo 2018-01-21 17:04:15 +08:00
虽然我也是做的 C++桌面开发,但是对于楼主能轻松撸出这么多基于 windows API 的函数,佩服啊。我就只能用 Qt 做些简单的软件。。。
|
27
h4lbhg1G OP @brightguo 其实编译的静态无额外 dll 依赖二进制也就 300k,运行内存 100k 左右稳定。其实这玩意的起源是我之前用的类似当做开始菜单用的是一个 2000 多行的 ahk 脚本,那是逐年写的。
写这个主要是想在 ahk 里面实现这个随时隐藏显示命令行的功能,然后过程中感觉 ahk 的那种不严格的语法很不爽。VS 倒是啪啪就写好一个可以跑的了,果真是宇宙第一个 IDE。逃 |
28
h4lbhg1G OP @brightguo 唔,我还不会搞 UI。说实话,我都不知道 UI 该从哪里开始搞。这是因为是搞过 icpc 的。
|
29
Akkuman 2018-01-21 18:57:15 +08:00 via Android
@h4lbhg1G 运行内存只有 100 多 k ?我家里老电脑,32 位 win7 测试是大约 10m 多点,期间运行的只有 aria2c.exe
|
31
h4lbhg1G OP @Akkuman 不会这么大吧?我就没见过超过 6M 过。是越用越多还是稳定 10M,晚些时候我找台 win7 测试下。
我 20 多个配置,启动 2M 到 3M,运行一会后任务管理器里面是 100k。 当然我的测试环境是从不唤出右键菜单(这里会有一个内存开销),还有一个小技巧就是把 auto_update:false,缓存也会消耗内存。 嘛,估计是 Windows10 的内存机制吧,Windows10 任务管理里面观察使用过程中似乎内存是越用越少的。 看我的截图,这是我唤出过右键的,依然不到 1M。 https://i.loli.net/2018/01/21/5a647c501ee8d.png |
32
brightguo 2018-01-21 19:44:07 +08:00
@Akkuman 我的 BatchRunTrayTool.exe 在 Win10 上是 10MB 左右,我都不能控制它内存占用多大,也不知道为毛这么大~
|
33
h4lbhg1G OP |
34
Akkuman 2018-01-21 20:07:27 +08:00 via Android
|
36
brightguo 2018-01-21 20:26:55 +08:00
@Akkuman Win10 有超爽的快捷菜单栏(主要是能放的很多),多桌面切换。各种系统配置界面都优化了(如环境变量设置界面),程序员必须用起来,会节约很多时间。
|
37
h4lbhg1G OP 嗯 我属于如果可能就会用版本号最大的软件,除非真的是有严重问题。软件版本升级自然是越来越好的(一些国产商业免费软件除外)。Windows10 的兼容性应该还不错了,当然具体到最终用户,大约就是习惯、版权、行业软件兼容性之类的吧。
|
38
Akkuman 2018-01-22 16:38:27 +08:00 via Android
测试看了看,那个 10m 多应该是刚开机的时候,后来占用大约是 1500k 左右,常驻运行是 caddy 和 aria2
|
39
h4lbhg1G OP @Akkuman 1 到 2M 我这边也算是正常的,CommandTrayHost 的内存占用,与托管的程序是什么以及否运行是没有直接关系的,只与配置数量有关。另外设置参数也有一定关系,比如刚刚换出过右键菜单,或者用了 crontab,那样 1~2M 占用是比较正常的了。是预期的情况,我没啥好纠结的了。另外可能某些杀软或者某些特殊软件比如 SysinternalsSuite 的 Process Explorer 一旦打开,也会普遍导致占用上升一点。
刚好这时我的占用是 100k 左右,可能是我现在运行程序有点多缘故。 https://i.loli.net/2018/01/22/5a65eb531e13f.png 下面的算是我的碎碎念,看不明白可以忽略^_^ 在 Visual Studio 里面调试的时候,调试版到处 printf,各种临时变量,配置也是 10 来个左右,从 0.01 版本到现在 2.1.2 版本,基本上 Visual Studio 自带的内存显示都是 3M-6M 占用(调试版,会额外占用些用于保存 Debug 信息)。 所以对于使用正式版出现 2 个配置 10M 占用还是比较惊讶。启动 CommandTrayHost 时,读取 config.json 这时会有一个动态内存分配,大小和 config.json 等同。同时会对配置进行合法性校验,参数取值范围校验。这时的占用,期望的是 2M 到 3M 左右。配置加载完了,这个内存会释放。 然后 config.json 的实质内容就被转换了一个格式放到内存中了,主要的内存占用应该都是这个。期望的是十几或者几十 k 占用。 如果开启了 auto_update,这样就相当于启动 CommandTrayHost 时自动点击了一次,菜单里面 帮助 下面的 检测更新。这时会开一个线程自动检查下,这里会有一个额外占用,期望是 1M 左右,和配置多少无关。但是检测完了,会自动退出。这个内存会自动释放。 如果启用了 crontab,那么每次触发,可能会有不超过 1M 的内存占用。但都是触发完就会释放的。 另外就是右键唤出菜单,这个会占用一些 1-2M,虽然是用完就会释放,但是操作系统似乎显示上的延迟还是怎么,感觉要过一会才会显示释放了。 |
40
fcymk2 2018-12-13 10:49:38 +08:00
好软件 收藏了
|