自定义系统右键菜单工具 CustomContextMenu 使用说明
安装:以管理员身份运行:install.bat
卸载:以管理员身份运行:uninstall.bat,由于是重启了explorer.exe,所以卸载后DLL文件可以直接删除。
主要分为固定部分和可配置部分,固定部分主要是保持Windows Shell编程的透明,使用者无须关心右键的菜单如何创建、展示和响应的。
可配置部分主要是自定义菜单和菜单的响应事件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-quISHuIS-1662442616610)(./doc/design.png)]
在 bin 目录下修改 menu.xml,默认给出了一个模板:
<menu name="安卓右键工具" icon="icon\logo.png" run="..\..\APKInfo\APKInfo\bin\APKInfo.exe" debug="0">
<menu name="复制路径" icon="icon\copypath.png" arg="{1} copypath"/>
<menu name="DEX 》JAR" icon="icon\dex2jar.png" arg="{1} dex2jar"/>
<menu name="Manifest 》TXT | AXML 》TXT" icon="icon\m2txt.png" arg="{1} axml2txt"/>
<menu name="查看APK信息" icon="icon\apkinfo.png" arg="{1} viewapk"/>
<menu name="查看签名信息" icon="icon\signinfo.png" arg="{1} viewsign"/>
<menu name="签名" arg="{1} sign" icon="icon\sign.png"/>
<menu/>
<menu name="安装(卸载安装)" icon="icon\install.png" arg="{1} installd"/>
<menu name="安装(替换安装)" icon="icon\installr.png" arg="{1} installr"/>
<menu name="卸载" icon="icon\uninstall.png" arg="{1} uninstall"/>
<menu name="查壳" icon="icon\detect.png" arg="{1} viewwrapper"/>
<menu name="手机信息" icon="icon\phone.png" arg="{1} phone"/>
<menu name="手机截图" icon="icon\photo.png" arg="{1} photo"/>
<menu name="提取图标" icon="icon\extracticon.png" arg="{1} icon"/>
<menu name="zipalign优化" icon="icon\align.png" arg="{1} zipalign"/>
<menu name="反编译" icon="icon\decom.png" arg="{1} baksmali"/>
<menu name="回编译" icon="icon\build.png" arg="{1} smali"/>
<menu name="自定义插件" icon="icon\plug.png">
<menu name="插件1" arg="{1} plug1"/>
<menu name="插件2" arg="{1} plug2"/>
<menu name="插件3" arg="{1} plug3"/>
menu>
<menu name="打开插件安装目录" icon="icon\plug.png" arg="{0} open"/>
<menu name="关于" icon="icon\about.png" arg="{1} about"/>
menu>
name:显示在系统右键菜单中的名称。
icon:可选,显示在系统右键菜单中的图标。
debug:可选,默认为"0",调用三方应用时会以隐藏窗口模式运行,且不输出日志。设置为 “1” 时,调用三方应用以显式窗口模式运行,并可以通过DebugView 查看日志输出,同时本目录下会生成名为 log.txt 的日志文件,方便排查:
<menu name="安卓右键工具" icon="icon\logo.png" debug="1">
...
menu>
run:可选,表示用户点击了子菜单命令后需要调用的三方应用,路径支持绝对路径和相对路径(相对于本DLL的路径)。为可继承属性,如果当前子节点未设置该属性,则使用父级节点的该属性值。目前支持以下几种扩展名路径:
exe:调用exe程序:
<menu name="安卓右键工具" icon="icon\logo.png" run="xxx.exe">
...
menu>
调用的参数序列为:xxx.exe arg [files]
py:调用Python脚本:
<menu name="安卓右键工具" icon="icon\logo.png" run="xxx.py">
...
menu>
调用的参数序列为:python xxx.py arg [files]
jar:调用jar包:
<menu name="安卓右键工具" icon="icon\logo.png" run="xxx.jar">
...
menu>
调用的参数序列为:java -jar xxx.jar arg [files]
lua:调用本目录下名为 runlua.exe 的程序执行该lua脚本文件:
<menu name="安卓右键工具" icon="icon\logo.png" run="xxx.lua">
...
menu>
调用的参数序列为:runlua.exe xxx.lua arg [files]
点击任意菜单项后,菜单的 arg 内容会先经过标识符的替换后传递给到三方App中,具体调用哪个App取决于菜单配置文件中的 run 值,可以参考前面的章节以及目录下的示例脚本。