You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
10 KiB
154 lines
10 KiB
{
|
|
/**
|
|
* 0. 常见样例可以参考项目wiki.
|
|
* 1. "cmd"必须包含.exe.如果要运行批处理.bat, 可以使用 cmd.exe /c或者cmd.exe /k.
|
|
* 2. 所有的路径必须要是C:\\Windows这样的双斜杠分割,这是json的字符串规定。
|
|
* 3. 所有的路径都可以是相对路径,比如 ..\..\icons\icon.ico这种形式。
|
|
* 但是参考各有不同:
|
|
* cmd里面的子程序工作路径由working_directory指定
|
|
* 其他路径则是CommandTrayHost.exe所在目录指定
|
|
* 4. 相对路径规则。首先绝对路径不会改变,规则只对相对路径有效,其次cmd只会相对path。
|
|
* path: i) path为空且cmd为绝对路径,此时path会从cmd提取路径
|
|
* ii) 除 i) 以外的相对路径都是相对于CommandTrayHost.exe所在路径
|
|
* working_directory:
|
|
* i) 如果working_directory以>开头,那么它会相对于CommandTrayHost.exe所在目录
|
|
* ii) 除 i) 以外的情况都是相对于经过处理过的path
|
|
* 5. 本文可以用系统自带的记事本编辑,然后保存选Unicode(大小端无所谓)或者UTF-8都可以
|
|
* 如果用VS Code或者Sublime Text编辑,可以用JSON with Comments语法着色
|
|
* 6. 多个CommandTrayHost.exe只要放到不同目录,就可以同时运行与开机启动,互相不影响. 当然了默认配置是为了演示用,
|
|
* 启用了全部热键,第二个启动时会提示热键冲突,禁用或者修改第二个的热键即可。
|
|
* 7. 如果改成 "enable_cache": true ,则会将用户操作缓存到command_tray_host.cache
|
|
* 可以缓存用户的启用停用状态,窗口的位置大小,以及显示隐藏状态。作用下次启动
|
|
* CommandTrayHost.exe时,会忽略config.json里面的值。
|
|
* 缓存失效判定是与config.json之间的时间戳先后对比。缓存写入磁盘只会在全部操作(全部启用
|
|
* 全部禁用,全部显示隐藏),以及退出时发现缓存发生有效更改时才会写入磁盘。
|
|
* 8. 全局热键格式: 可以使用alt win shift ctrl的任意个组合加上一个按键
|
|
* 加上的按键支持0-9的数字 A-Z的字母,其他特殊按钮,鼠标左右键,滚轮,甚至手柄按钮也是可以的.比如上方向键0x26
|
|
* 键盘码参考这里 https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
|
|
* 大小写无关,顺序无关,如果多个非修饰符的按钮,最后的那个按钮会起作用。
|
|
* 热键注册失败,一般是与系统中存在的冲突了,换一个再试
|
|
* 9. crontab语法,秒 分 时 日期 月份 星期,比常规crontab多了个秒钟,具体语法使用搜索引擎
|
|
* 例子 0 0/10 * * * * 每10分钟运行一次
|
|
* 例子 0 1,11,21 * * * 每小时的1分 11分 21分运行一次
|
|
* 例子 0 2/10 12-14 * * * 12点到14点,每小时从2分钟开始每10分钟运行一次
|
|
* 日志文件超过10M会进行rotate,最多支持rotate文件数为500
|
|
*/
|
|
"configs": [
|
|
{
|
|
// 下面8个一个不能少
|
|
"name": "cmd例子", // 系统托盘菜单名字
|
|
"path": "C:\\Windows\\System32", // cmd的exe所在目录,相对路径是可以的,参考目录是CommandTrayHost.exe所在目录
|
|
"cmd": "cmd.exe", // cmd命令,必须含有.exe
|
|
"working_directory": "", // 命令行的工作目录. 如果是相对路径,>开头意味着相对于CommandTrayHost.exe,否则相对于path。
|
|
"addition_env_path": "", // dll搜索目录,暂时没用到
|
|
"use_builtin_console": false, // 是否用CREATE_NEW_CONSOLE,暂时没用到
|
|
"is_gui": false, // 是否是 GUI图形界面程序
|
|
"enabled": true, // 是否当CommandTrayHost启动时,自动开始运行
|
|
// 下面的是可选参数
|
|
// 当CommandTrayHost不是以管理员运行的情况下,由于UIPI,显示/隐藏会失效,其他功能正常。
|
|
"require_admin": false, // 是否要用管理员运行
|
|
"start_show": false, // 是否以显示(而不是隐藏)的方式启动子程序
|
|
"ignore_all": false, // 是否忽略全部启用禁用操作
|
|
"position": [ // 显示窗口的初始位置
|
|
0.2, // STARTUPINFO.dwX 大于1就是数值,0-1之间的数值代表相对屏幕分辨率的百分比
|
|
200 // STARTUPINFO.dwY, 同上
|
|
],
|
|
"size": [ // 显示窗口的初始大小
|
|
0.5, // STARTUPINFO.dwXSize, 同上
|
|
0.5 // STARTUPINFO.dwYSize, 同上
|
|
],
|
|
"icon": "", // 命令行窗口的图标
|
|
"alpha": 170, // 命令行窗口的透明度,0-255之间的整数,0为完全看不见,255完全不透明
|
|
"topmost": false, // 命令行窗口置顶
|
|
// 具体说明参考顶部注释7
|
|
"hotkey": { // 下面并不需要都出现,可以只设置部分
|
|
"disable_enable": "Shift+Win+D", // 启用/禁用切换
|
|
"hide_show": "Shift+Win+H", // 显示/隐藏切换
|
|
"restart": "Shift+Win+R", // 重启程序
|
|
"elevate": "Shift+Win+A", // 以管理员运行本程序
|
|
},
|
|
"not_host_by_commandtrayhost": false, // 如果设置成了true,那么CommandTrayHost就不会监控它的运行了
|
|
"not_monitor_by_commandtrayhost": false, // 如果设置成true同上,但是会随着CommandTrayHost退出而关闭。
|
|
"kill_timeout": 200, // 执行关闭操作时,先尝试通知程序自己关闭然后等多少ms,然后再杀进程,默认是200ms
|
|
"exclusion_id": 1, // 互斥id,要求是大于0的整数。相同的互斥id启动时,会先杀掉其他。
|
|
"kill_process_tree": false, // 杀进程的时候同时杀掉其子进程,用于nginx. 为true时,kill_timeout无效
|
|
},
|
|
{
|
|
"name": "cmd例子3",
|
|
"path": "C:\\Windows\\System32",
|
|
"cmd": "cmd.exe",
|
|
"working_directory": "",
|
|
"addition_env_path": "",
|
|
"use_builtin_console": false,
|
|
"is_gui": false,
|
|
"enabled": false,
|
|
},
|
|
],
|
|
"global": true,
|
|
// 可选参数
|
|
"require_admin": false, // 是否让CommandTrayHost运行时弹出UAC对自身提权
|
|
"icon": "", // 托盘图标路径,只支持ico文件,可以是多尺寸的ico; 空为内置图标
|
|
"icon_size": 256, // 图标尺寸 可以用值有256 32 16
|
|
"cmd_menu_max_length": 0, // cmd和path最大字符串个数,0表示不限制,大于0整数表示超过之后用...标出
|
|
"lang": "auto", // zh-CN en-US https://msdn.microsoft.com/en-us/library/cc233982.aspx
|
|
"groups": [ // groups的值是一个数组(方括号),可以有两种类型,一种为数值,一种为object(花括号)。object代表下级菜单。最多可以40层嵌套。object必须有name字段
|
|
{
|
|
"name": "cmd例子分组1", // 分级菜单的名字
|
|
"groups": [
|
|
0, // 编号,是configs的编号。数组下标,从0开始
|
|
1,
|
|
],
|
|
},
|
|
{
|
|
"name": "cmd例子分组2",
|
|
"groups": [
|
|
2,
|
|
1,
|
|
],
|
|
},
|
|
2,
|
|
{
|
|
"name": "empty test", // 可以没有groups,但是不能没有name
|
|
},
|
|
],
|
|
"enable_groups": true, // 启用分组菜单
|
|
"groups_menu_symbol": "+", // 分组菜单标志
|
|
"left_click": [
|
|
0,
|
|
1
|
|
], // 左键单击显示/隐藏程序 configs序号,从0开始.空数组或者注释掉,则显示CommandTrayHost本体
|
|
"enable_cache": true, // 启用cache
|
|
"conform_cache_expire": true, // CommandTrayHost是否检查cache文件和配置文件,设为false时热加载被禁用
|
|
"disable_cache_position": false, // 禁止缓存窗口位置
|
|
"disable_cache_size": false, // 禁止缓存窗口大小
|
|
"disable_cache_enabled": true, // 禁止缓存启用禁用状态
|
|
"disable_cache_show": false, // 禁止缓存显示隐藏状态
|
|
"disable_cache_alpha": false, // 禁止缓存透明度 (缓存时只对有alpha值的configs有作用)
|
|
// 具体说明参考顶部注释7
|
|
"hotkey": { // 并不要求全部配置,可以只配置需要的
|
|
"disable_all": "Alt+Win+Shift+D",
|
|
"enable_all": "Alt Win + Shift +E", // 空格或者+号都可以
|
|
"hide_all": "Alt+WIN+Shift+H", // 大小写无关的
|
|
"show_all": "AlT Win Shift s", // 甚至这种都可以识别
|
|
"restart_all": "ALT+Win+Shift+U",
|
|
"elevate": "Alt+wIn+Shift+a",
|
|
"exit": "Alt+Win+Shift+X", // 但是比较推荐这种格式
|
|
"left_click": "Alt+Win+Shift+L",
|
|
"right_click": "Alt+Win+Shift+R",
|
|
// 下面的五个快捷键,可以对外部程序生效
|
|
"add_alpha": "Alt+Ctrl+Win+0x26", // 修改当前激活的任何窗口(要可能)透明度,不仅仅只对本程序托管的有效,其他程序也行
|
|
"minus_alpha": "Alt+Ctrl+Win+0x28", //上面上箭头 这里下箭头 Alt+Ctrl+Win+↑↓
|
|
"topmost": "Alt+Ctrl+Win+T", // 切换当前窗口的置顶状态
|
|
"hide_current": "Alt+Ctrl+Win+H", // 隐藏当前窗口,可以在托盘图标上找到对应项目
|
|
"show_all_docked": "Alt+Ctrl+Win+S", // 显示所有被上面这个快捷键隐藏的窗口
|
|
},
|
|
"repeat_mod_hotkey": false, // 是否长按算多次,Windows XP下面无效
|
|
"global_hotkey_alpha_step": 5, // 上面透明度调节的幅度
|
|
"show_hotkey_in_menu": true, // 在菜单后面加上成功注册的热键
|
|
"enable_hotkey": true,
|
|
"start_show_silent": true, // 启动的时候屏幕不会闪(也就是等到获取到窗口才显示)
|
|
"auto_hot_reloading_config": true, // 这个为true时,相当于自动点击加载配置弹窗的否
|
|
"auto_update": true,
|
|
"skip_prerelease": true,
|
|
"keep_update_history": false, // 是否保留自动更新时的临时文件
|
|
}
|