Java 如何为我的软件创建上下文菜单?
因此,我们的想法是制作一个只对Java 如何为我的软件创建上下文菜单?,java,windows,contextmenu,Java,Windows,Contextmenu,因此,我们的想法是制作一个只对.txt文件起作用的加密软件,并在其上应用一些加密功能,生成一个新文件。为了避免用户拖放文件的麻烦,我决定在这里做一个类似于我的防病毒软件的选项 我想学习如何为各种操作系统制作这些,而不考虑体系结构:) 这些菜单叫什么?我指的是正确的名称,所以下次我可以更清楚地引用它们 如何制作这些? 我的初步理解是: 我认为它会做的是:将文件作为参数传递给main()方法,然后将其余的处理留给我:)可能不是您希望的答案,但这似乎是一个相当复杂的问题。无论如何,我会分享我对它的了解
.txt
文件起作用的加密软件,并在其上应用一些加密功能,生成一个新文件。为了避免用户拖放文件的麻烦,我决定在这里做一个类似于我的防病毒软件的选项
我想学习如何为各种操作系统制作这些,而不考虑体系结构:)
我认为它会做的是:将文件作为参数传递给
main()
方法,然后将其余的处理留给我:)可能不是您希望的答案,但这似乎是一个相当复杂的问题。无论如何,我会分享我对它的了解,希望它足以(至少)让你开始
不幸的是,使用Java创建上下文菜单的最简单方法是编辑注册表。我将尝试总结总体需求的里程碑和实现目标的步骤
有关示例代码和工作演示的链接,请参见文章末尾。
需要做什么
.txt
,.doc
,.doc
,.docx
)的上下文菜单中添加一个附加条目(对于我们的java应用程序)
.txt
类关联的..\Classes\txtfile
,而不是编辑..\Classes\.txt
javaw.exe
的目录在path变量中)main
方法需要一个字符串数组,该数组包含一个与我们需要处理的文件路径相对应的值(好吧,这是最简单的部分-仅说明显而易见的部分).TXT
文件-可以对每个文件类别应用相同的步骤李>
HKCR\
(例如HKCR\txtfile
)下的注册表项,这需要管理权限。
为了简单起见,我们假设只需要更改当前用户的设置,因此我们必须编辑HKCU\Software\Classes
(例如HKCU\Software\Classes\txtfile
)下的键,不需要管理特权。
如果选择进行系统范围的更改,则需要进行以下修改:
REG ADD/DELETE
命令中,将HKCU\Software\Classes\…
替换为HKCR\…
(不要在REG QUERY
命令中替换它)- 提升运行实例的权限(由于UAC的原因,最新版本的windows可能会更复杂)。网上有很多资源,这里也有很多似乎很有希望(但我自己还没有测试过)
- 要求用户明确地以“管理员身份”运行您的应用程序(使用右键单击->“以管理员身份运行”等)
REG Operation[参数列表]
形式的命令来实现对注册表的编辑,操作涉及ADD
、DELETE
、QUERY
(稍后将详细介绍)。
为了执行必要的命令,我们可以使用实例。例如
String[]cmd={“REG”,“QUERY”,“HKCR\\.txt”,““/ve”}代码>
newprocessbuilder(cmd.start()代码>
//执行:REG QUERY HKCR\.txt/ve
当然,我们可能希望捕获并进一步处理命令的返回值,这可以通过相应的process'方法完成。但这属于“实施细节”的范围
“通常”我们必须编辑.txt
文件类,除非它与另一个文件类关联。我们可以使用以下命令对此进行测试:
//检查键“HKCR\.txt”的“默认”值
REG查询HKCR\.txt/ve
//可能的输出:
(默认)REG_SZ txtfile
我们所需要的就是解析上面的输出,并找出默认值是空的还是包含类名。在这个例子中,我们可以看到相关的类是HKCU
|_____Software
|_____Classes
|_____txtfile
|_____Shell
|_____MyCoolContextMenu: [Default] -> [Display name for my menu-entry]
|_____Command: [Default] -> [<MY_COMMAND>]*
*: in this context, a '%1' denotes the file that was right-clicked.
REG ADD HKCU\Software\Classes\txtfile\Shell\MyCoolContextMenu /ve /t REG_SZ /d "Click for pure coolness" /f
REG ADD HKCU\Software\Classes\txtfile\Shell\MyCoolContextMenu\Command /ve /t REG_SZ /d "\"C:\Path\To\javaw.exe\" -jar \"C:\Path\To\Demo.jar\" \"%%1\" /f"
// Short explanation:
REG ADD <Path\To\Key> /ve /t REG_SZ /d "<MY_COMMAND>" /f
\_____/ \___________/ \_/ \_______/ \_______________/ \_/
__________|_______ | | |___ | |
|Edit the Registry | | _______|________ | _______|_______ |
|adding a key/value| | |Create a no-name| | |Set the data | |
-------------------- | |(default) value | | |for this value.| |
| ------------------ | |Here: a command| |
_______________|______________ | |to be executed.| |
|Edit this key | | ----------------- |
|(creates the key plus | ____|_________ _________|_____
| any missing parent key-nodes)| |of type REG_SZ| |No confirmation|
-------------------------------- |(string) | -----------------
----------------