使用Java添加系统右键菜单
2010-03-28 22:12
274 查看
注:ICE_JNIRegistry.dll 和registry.jar这两个文件可在我的资源中下载
如果你在系统中需要经常使用DOS进入某个文件夹,一般的做法就是打开”运行”,在命令文本框中输入cmd,然后再在出现的
DOS界面中输入要达到的文件夹的路径。有没有更好的办法呢?比如说右击一个文件夹,将出现一个菜单项为“命令提示符”,单击
此菜单项则会直接进入DOS,而且DOS提示的当前路径也就是文件夹的路径。 要达到这个目的,修改注册表即可。当然我们这里讨论
的是如何使用JAVA 来做到这点。其实就是使用JAVA来操作注册表。
使用JAVA操作注册表的方法有几种,最简单的方法就是使用JAVA本身提供的API 来操作,即java.util.prefs,使用其中的类
Preferences,但是如果使用自带的API则只能在 Win32 下用来操作 HKCU/Software/JavaSoft 和 HKLM/Software/JavaSoft 下及子节
点的数据。如果需要达到添加右键菜单的功能,必须修改HKEY_CLASSES_ROOT子键内容。也就是说JAVA自带的API做不到自由访问注册
表的键值。不过JAVA提供了一个很好的方式称为JNI,实际上就是通过C或C++提供的方法操作注册表,它们所写的程序可生成DLL文件
,然后在JAVA中调用DLL。这里关于如何使用C或C++就不多说了,网上也有成堆的文章,想了解的可以去看看。在这里我使用一个开
源的项目gdapi。以下把使用的详细步骤介绍一下
第一步、把论坛上的registry-3.1.3.zip下载到本机
第二步、将registry-3.1.3.zip解压,解压之后会产生目录bin, classes, doc, source。这里只需要bin目录,打开bin目录,在其
中会有两个文件ICE_JNIRegistry.dll 和registry.jar
第三步、新建一个工程,你可以采用任意开发工具,这里采用MyEclipse。打开MyEclipse新建一个Java Project, 然后将
registry.jar包添加到工程中来,并且将ICE_JNIRegistry.dll文件复制到工程的根目录下。
第四步、编写Java代码调用dll. 实现右击文件夹时将”命令提示符”添加到右键菜单下。
首先要确定需要修改的注册表项为HKEY_CLASSES_ROOT//Directory//shell
具体Java代码如下:
复制代码运行结束后,找到任意一个文件夹,右击此文件夹将会出现cmd菜单项,选择此项将会进入dos,当前目录为此文件夹的目录
如果你在系统中需要经常使用DOS进入某个文件夹,一般的做法就是打开”运行”,在命令文本框中输入cmd,然后再在出现的
DOS界面中输入要达到的文件夹的路径。有没有更好的办法呢?比如说右击一个文件夹,将出现一个菜单项为“命令提示符”,单击
此菜单项则会直接进入DOS,而且DOS提示的当前路径也就是文件夹的路径。 要达到这个目的,修改注册表即可。当然我们这里讨论
的是如何使用JAVA 来做到这点。其实就是使用JAVA来操作注册表。
使用JAVA操作注册表的方法有几种,最简单的方法就是使用JAVA本身提供的API 来操作,即java.util.prefs,使用其中的类
Preferences,但是如果使用自带的API则只能在 Win32 下用来操作 HKCU/Software/JavaSoft 和 HKLM/Software/JavaSoft 下及子节
点的数据。如果需要达到添加右键菜单的功能,必须修改HKEY_CLASSES_ROOT子键内容。也就是说JAVA自带的API做不到自由访问注册
表的键值。不过JAVA提供了一个很好的方式称为JNI,实际上就是通过C或C++提供的方法操作注册表,它们所写的程序可生成DLL文件
,然后在JAVA中调用DLL。这里关于如何使用C或C++就不多说了,网上也有成堆的文章,想了解的可以去看看。在这里我使用一个开
源的项目gdapi。以下把使用的详细步骤介绍一下
第一步、把论坛上的registry-3.1.3.zip下载到本机
第二步、将registry-3.1.3.zip解压,解压之后会产生目录bin, classes, doc, source。这里只需要bin目录,打开bin目录,在其
中会有两个文件ICE_JNIRegistry.dll 和registry.jar
第三步、新建一个工程,你可以采用任意开发工具,这里采用MyEclipse。打开MyEclipse新建一个Java Project, 然后将
registry.jar包添加到工程中来,并且将ICE_JNIRegistry.dll文件复制到工程的根目录下。
第四步、编写Java代码调用dll. 实现右击文件夹时将”命令提示符”添加到右键菜单下。
首先要确定需要修改的注册表项为HKEY_CLASSES_ROOT//Directory//shell
具体Java代码如下:
package com; /** *Java 操作注册表,为文件夹添加右键菜单cmd *author: zhouh */ import java.io.UnsupportedEncodingException; import com.ice.jni.registry.NoSuchKeyException; import com.ice.jni.registry.RegStringValue; import com.ice.jni.registry.Registry; import com.ice.jni.registry.RegistryException; import com.ice.jni.registry.RegistryKey; public class RegisterManager{ /*定义目录字符串*/ private static String dir = "Directory//shell"; /*注册表键对象*/ private static RegistryKey rkey; /*为dir添加set和get方法*/ public String getDir() { return dir; } public void setDir(String dir) { this.dir = dir; } /*构造函数,打开HKEY_CLASSES_ROOT中的dir*/ private RegisterManager() { rkey = Registry.openSubkey(Registry.HKEY_CLASSES_ROOT, dir , RegistryKey.ACCESS_WRITE); } /*创建子目录方法*/ public void createSubDir(String subDirName,String key, String defaultValue) throws RegistryException { /*根据传入的参数创建子目录*/ rkey.createSubKey(subDirName, ""); /*打开当前创建的子目录,设置为可写状态*/ rkey = Registry.openSubkey(Registry.HKEY_CLASSES_ROOT, dir+"//"+subDirName, RegistryKey.ACCESS_WRITE); /*设置当前子目录的默认注册表项的值*/ rkey.setValue(new RegStringValue(rkey, key, defaultValue)); /*重新设置当前目录,为方便此目录下再添加子目录*/ this.setDir(dir+"//"+subDirName); } public static void main(String[] args) throws NoSuchKeyException, RegistryException, UnsupportedEncodingException{ /*创建对象*/ RegisterManager rm = new RegisterManager(); /*创建子项CommandPrompt,默认的value值为cmd, 那么在文件夹的右键菜单下即会显示cmd*/ rm.createSubDir("CommandPrompt", "", "cmd"); /*在CommandPrompt项下创建子项Command,值为(cmd.exe /k cd /"%1/") 也就是单击cmd所要执行的操作*/ rm.createSubDir("Command", "", "cmd.exe /k cd /"%1/""); }
复制代码运行结束后,找到任意一个文件夹,右击此文件夹将会出现cmd菜单项,选择此项将会进入dos,当前目录为此文件夹的目录
相关文章推荐
- 使用Java添加系统右键菜单
- 使用Java添加系统右键菜单---修改篇
- 使用Java添加系统右键菜单--详解版
- [技巧分享-软件使用] Beyond Compare添加到系统右键菜单
- 添加功能到系统右键菜单
- 使用OpenLayers3 添加地图鼠标右键菜单
- ubuntu16.04 xfce4的鼠标主题设置为oxygen-red、修改文件夹背景颜色、两处系统字体设置、右键菜单添加压缩解压选项
- C# 系统应用之ListView控件 (三).添加ContextMenuStrip右键菜单打开删除文件
- 在Windows 7的64位系统下将UltraEdit添加到鼠标右键菜单
- VSCode 绿色版(zip压缩包) 添加右键菜单 使用VSCode 打开文件或文件夹
- 添加"Copy To"和"Move To" 到系统右键菜单中(Vista 也适用)
- 用FileMenu Tools玩转系统右键菜单 软件还有其他的内置命令,这里由于篇幅原因不能全部介绍了,比如注册DLL、反注册命令,当注册表中的某个dll或ocx文件受损时,可以使用该命令进行恢
- JAVA Jtable 添加右键菜单 参考代码
- 添加右键菜单:编译java文件
- win7 64位系统中为右键菜单添加显示隐藏系统文件和文件扩展名的方法
- 【电脑使用】修改注册表,添加右键菜单“打开”的方法
- Sublime Text2篇之如何在window中的右键菜单中添加用st2打开方式以及将st2添加至系统的环境变量
- mfc使用CListCtrl添加右键菜单及双击(以默认方式)打开文件。
- 为XYplorer添加右键菜单:“使用XYplorer打开”
- 为NOTEPAD++添加系统右键菜单