自定义系统右键菜单工具-使用说明

下载地址:

可扩展最新版:bigsinger/CustomContextMenu: 自定义Windows系统右键菜单工具

相关帖子:

说在前头

这个系统右键菜单一直都想做,但是苦于工作太忙根本无暇设计,后来一直等到来了新人,刚好交给他练手。最初的版本是用C++语言写的,但是一开始版本不稳定总是会造成资源管理器崩溃,用着用着explorer就挂了,比较头疼。这是1.0版本。

后来就让他把功能用脚本代替实现,菜单只实现界面,功能调Python脚本来派发实现,这样即使功能有问题也不会造成资源管理器的崩溃。而且为了考虑可扩展性,增加了一个子级菜单,也就是“插件”那一级菜单。这是2.0版本。

随着新人能力渐长,大家多提BUG反馈,这工具也慢慢打磨的稳定了,虽然偶尔有一些小BUG,但总归频率低了,大家也都慢慢愿意使用起来,现在基本部门里的同事都在使用了。

后来,新人走了,工具没人维护,有一个查壳的功能需要更新特征修复BUG等,由于C++代码较多,功能糅合的不太喜欢看。于是动手重新设计了下。

原有设计上的一些痛点:

  • 版本分x64和x86两个版本,维护的代码也都有许多重复部分。
  • 安装卸载不便,更新发布不便。
  • 有时会造成explorer的崩溃。
  • 界面与功能没有完全分离。
  • 虽然功能部分使用了脚本,但是总体可扩展性太差。

结合以上几点,设计解决方案如下:

  • 菜单界面部分采用C#语言编写,release时使用any cpu选项,兼容x64和x86平台,不用再维护两个版本。
  • 菜单UI与功能完全分离,脚本部分提交到GitHub,人人可写人人可完善,提交维护方便。
  • 菜单UI可扩展,通过编辑menu.xml菜单配置文件来动态生成菜单项。
  • 一键安装一键卸载。
  • 更新版本时,先一键卸载然后GitHub更新代码,再一键安装即可。

现在等下一个新人,DLL部分就不让他维护了,直接把对应的脚本功能完善好即可,提交到GitHub我这边就是新版本了。

一、所需环境

.NET Framework v4.0

下载地址:Download Microsoft .NET Framework 4(独立安装程序) from Official Microsoft Download Center

Python2.7

由于菜单响应事件是由py编写的,所以需要安装Python,选择的版本是2.7,下载地址:Python 2.7.0 Release | Python.org

star库

由于菜单响应事件是由py编写的,且使用了三方的star库,所以需要安装一下,具体步骤:

在Python安装目录的lib文件夹下(如D:\Python27\Lib),直接gitclone地址:https://github.com/pythonstar/star.git

二、安装

务必以管理员身份运行reg.bat进行注册,注册原理见其源码:

@echo off

set dir=%~dp0

rem 判断64位系统和32位系统
if /i %PROCESSOR_IDENTIFIER:~0,3%==x86 (
    echo 32位操作系统
    %windir%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe %dir%bin/CustomContextMenu.dll /CodeBase
) else (
    echo 64位操作系统
    %windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe %dir%bin/CustomContextMenu.dll /CodeBase
)
pause

输出含有以下内容时为注册成功:

Types registered successfully

成功注册了类型

三、卸载

务必以管理员身份运行unreg.bat进行卸载,卸载原理见其源码:

@echo off

set dir=%~dp0

rem 判断64位系统和32位系统
if /i %PROCESSOR_IDENTIFIER:~0,3%==x86 (
    echo 32位操作系统
    %windir%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /unregister %dir%bin/CustomContextMenu.dll /CodeBase
) else (
    echo 64位操作系统
    %windir%\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe /unregister %dir%bin/CustomContextMenu.dll /CodeBase
)

taskkill /f /im explorer.exe

explorer.exe

输出含有以下内容时为卸载成功:

Types un-registered successfully

成功注销了类型

由于是重启了explorer.exe,所以卸载后dll文件可以操作。

四、自定义菜单配置

菜单配置文件

在bin目录下修改menu.xml,默认给出了一个模板:

<?xml version="1.0"?>
<menu name="安卓右键工具" icon="icon\logo.png">
  <menu name="复制路径" icon="icon\copypath.png" tag="copypath"/>
  <menu name="DEX 》JAR" icon="icon\dex2jar.png" tag="dex2jar"/>
  <menu name="Manifest 》TXT | AXML 》TXT" icon="icon\m2txt.png" tag="axml2txt"/>
  <menu name="查看APK信息" icon="icon\apkinfo.png" tag="viewapk"/>
  <menu name="查看签名信息" icon="icon\signinfo.png" tag="viewsign"/>
  <menu name="签名" tag="sign" icon="icon\sign.png"/>
  <menu/>
  <menu name="安装(卸载安装)" icon="icon\install.png" tag="installd"/>
  <menu name="安装(替换安装)" icon="icon\installr.png" tag="installr"/>
  <menu name="卸载" icon="icon\uninstall.png" tag="uninstall"/>
  <menu name="查壳" icon="icon\detect.png" tag="viewwrapper"/>
  <menu name="手机信息" icon="icon\phone.png" tag="phone"/>
  <menu name="手机截图" icon="icon\photo.png" tag="photo"/>
  <menu name="提取图标" icon="icon\extracticon.png" tag="icon"/>
  <menu name="zipalign优化" icon="icon\align.png" tag="zipalign"/>
  <menu name="反编译" icon="icon\decom.png" tag="baksmali"/>
  <menu name="回编译" icon="icon\build.png" tag="smali"/>
  <menu name="自定义插件" icon="icon\plug.png">
    <menu name="插件1" tag="plug1"/>
    <menu name="插件2" tag="plug2"/>
    <menu name="插件3" tag="plug3"/>
  </menu>
  <menu name="关于" icon="icon\about.png" tag="about"/>
</menu>

菜单配置说明

  • 一个菜单项三个属性,分别为name,icon和tag。
  • 如果name为空,则该菜单项为分隔条,例如配置分隔条可以这样配置:
  • icon指示了菜单项的图标文件,以相对路径填写,相对于dll的所在目录。例如:icon\logo.png,若不填写或者指示的图标文件不存在或者加载失败,则条菜单项前面不会出现图标,问题不大。为了加快菜单的加载速度,也可以全部不配置图标文件。
  • tag:如果该项菜单没有子菜单,也不是分隔条,那么就要响应事件,则tag指示了响应的事件名称,最终会被传递到oncommand.py中。
  • 如果菜单含有子菜单项,则按示例menu.xml添加即可。最多支持二级菜单项,不支持更深层次的子菜单。

五、如何响应事件

当用户点击菜单项时,菜单的tag名称会被传递到oncommand.py中,参数形式为:

oncommand.py tag file [files]

如果用户只选择了一个文件,则参数形式为:

oncommand.py tag file

如果用户只选择了多个文件,则参数形式为:

oncommand.py tag file files

也即出现开关files,也可以认为多了一个参数标志。当出现这个标志时,file是一个纯文本的文件全路径,内容是用户选择的多个文件列表,逐行列出。可以在py文件中自行处理多个文件的菜单响应事件,这里并没有实现。

六、效果截图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wSvgFuwn-1590997078162)(https://github.com/bigsinger/CustomContextMenu/blob/master/screenshot1.png?raw=true)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TPmCtiwK-1590997078163)(https://github.com/bigsinger/CustomContextMenu/blob/master/screenshot2.png?raw=true)]

安装:解压后运行exe,点【添加到系统右键菜单】 安卓右键工具v1.2版本使用说明 安卓右键工具是一款集合复制路径,Dex转Jar,Manifest和AXML查看,APK相关信息提取、优化、签名、反编译、回编译,手机信息查看、屏幕截图等功能的综合型工具,同时本工具拥有自定义插件功能,方便使用者对本工具的功能进行扩充。 一、运行环境 Windows操作系统64位 需安装Java开发环境并配置环境变量 需安装Python并配置环境变量,支持Python3和Python2 需安装ADB并配置环境变量 二、安装和卸载说明 1、安装 运行APKmenuTOOL.exe,点击“添加到系统右键菜单”,安装完毕。默认安装路径为D:\APKmenuTOOL。 2、卸载 运行APKmenuTOOL.exe,点击“从系统右键菜单移除”,卸载完毕。文件目录请手动删除。 三、使用方法 使用工具时需选中文件,右击,在弹出的菜单项中选择安卓右键工具,然后选择需要使用的功能即可。 四、功能说明 1、复制路径 复制被选中文件的路径(全文件路径,支持多个文件)到剪贴板,执行结果将在右下角冒泡提示。 2、Dex->Jar 将dex(或APK中的dex)文件转为jar文件。任务完成时会在当前目录下生成文件名为源文件名的jar文件,并自动使用jd-gui打开所生成的jar文件。执行结果将在右下角冒泡提示。 3、Manifest->TXT|AXML->XML 自动提取APK文件中的AndroidManifest.xml文件内容(若为AXML文件则直接提取文件内容),以TXT文件格式保存到当前目录,并自动打开生成的TXT文件。执行结果将在右下角冒泡提示。 4、查看APK信息 自动提取APK文件中软件名称、包名、版本、启动Activity、权限列表等信息。任务完成时自动显示获取的信息,执行结果将在右下角冒泡提示。 5、查看签名信息 自动提取APK文件的签名信息,任务完成时在当前目录下生成文件名为”源文件名_signinfo“的文本文件,,并自动打开生成的TXT文件。执行结果将在右下角冒泡提示。 6、签名 对选中的APK文件进行签名。默认使用debug签名,签名文件可以自由配置,路径为D:\APKmenuTOOL\tools\sign。任务完成时将在当前目录下生成文件名为“源文件名”的APK文件和文件名为“源文件名_sign”的log文件。执行结果将在右下角冒泡提示。 7、安装(卸载安装) 自动卸载被选中APK,然后将该APK安装到手机。使用该功能时,请先连接手机设备。执行结果将在右下角冒泡提示。 8、安装(替换安装) 将被选中APK覆盖安装到手机。使用该功能时,请先连接手机设备。执行结果将在右下角冒泡提示。 9、卸载 从手机中卸载被选中APK文件。使用该功能时,请先连接手机设备。执行结果将在右下角冒泡提示。 10、查看加壳信息 检测APK文件是否被加壳,若被加壳则检测加壳厂家。任务完成时自动显示获取的信息,执行结果将在右下角冒泡提示。 11、 APK深度检测 自动检测APK文件是否是游戏APP和是否为XPOSED插件。如果为游戏APP则显示游戏引擎,如果为XPOSED插件APP则显示入口类。 12、查看手机信息 自动获取手机类型、系统版本、系统API版本、系统CPU类型、序列号、IMEI、分辨率等信息,任务完成后将自动显示获取到的手机信息,使用该功能时请先连接手机设备。执行结果将在右下角冒泡提示。 13、手机截图 对手机当前画面进行截图,任务完成时会在当前目录下生成screenshot.png,同时复制截图至剪贴板。执行结果将在右下角冒泡提示。 14、提取图标 提取源文件APK中的图标,任务完成时会在当前目录下生成APK中所有分辨率的目标文件。执行结果将在右下角冒泡提示。 15、zipalign优化 对源文件进行优化,使程序运行更快。任务完成时会在当前目录下生成文件名为“源文件名_align”的APK文件。执行结果将在右下角冒泡提示。 16、反编译 对被选中APK进行反编译。任务完成时会在当前目录下生成和被选中APK名字一样的文件夹。执行结果将在右下角冒泡提示。 17、回编译 对反编译后的APK文件夹进行回编译得到APK文件。任务完成时会在当前目录下生成编译后的APK文件。执行结果将在右下角冒泡提示。 18、提取so 提取被选中APK中lib目录下的所有后缀为so的文件。任务完成时会在当前目录下生成名为“源文件名_lib”的文件夹。执行结果将在右下角冒泡提示。 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

asmcvc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值