如何为一个Java应用程序添加一个 Windows资源管理器右键菜单?

21

如何为Java应用程序添加一个子菜单项到Windows资源管理器上下文菜单(例如7-Zip所做的)?

2个回答

18

我知道两种方法来实现它。一种花哨的方法是编写Windows shell扩展,这似乎是powerarchiver、winzip等软件所使用的方法(这涉及运行代码以确定右键菜单项将基于选择的文件)。

对于简单的功能,一种简单的方法是在注册表中添加一个条目:

HKEY_CLASSES_ROOT\<file type>\shell\<display text>\command

其中<file type>是此上下文菜单应适用的文件格式,例如:*、.mdb、.doc。

<display text>是你想在上下文菜单中显示的内容。

然后将默认字符串作为要从上下文菜单启动的应用程序的路径添加,并且您可以使用%1来引用当前选定的文件,例如对于MS Access,我使用:

HKEY_CLASSES_ROOT\*\shell\MS Access 2000\command
"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" "%1"

这样做会为我选择的任何文件(因此使用“*”)添加上下文菜单项,允许我在MS Access 2000中启动它。

当然,在修改注册表之前,一定要备份您的注册表。

您的程序可以在安装期间或第一次运行时执行此操作。


这似乎足够简单,谢谢。这个方法是否还支持将多个条目分组到子菜单中? - Thilo
如何编写Windows Shell扩展来实现这个功能? - Tom
3
如何为文件夹和所有文件(*.*)添加注册表项? - Tom
@Tom 你可能会喜欢看看这个:http://www.codeproject.com/Articles/441/The-Complete-Idiot-s-Guide-to-Writing-Shell-Extens。 - fernandohur
2
@Jayden 在我的JAVA程序中,我该如何确定正在使用此应用程序打开的文件? - Jisan Mahmud
可以制作文件类型的例外吗?(我的意思是除了 *.zip 文件之外,将它应用于所有文件)? - Quark

4
您可以将Java程序打包成类似NSIS的安装程序,使用NSIS脚本生成资源管理器上下文菜单。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接