精华内容
下载资源
问答
  • 使用Java添加系统右键菜单--详解版

    千次阅读 2015-05-03 22:50:42
     /*创建子项CommandPrompt,默认的value值为cmd,那么在文件夹的右键菜单下即会显示cmd*/  rm.createSubDir("CommandPrompt", "","Test_DOS");  /*在CommandPrompt项下创建子项Command,值为(cmd.exe/k cd /...

    参考这篇文章:http://blog.csdn.net/brilliancezhou/article/details/5425754,发现无法调试成功。经过4小时的攻关,终于成功,分享給各位。

    效果如下:


     

    1.首先,调试过程中始终会在下面代码处出现问题:

    1. rkey.createSubKey(subDirName, "");  

    会出现空指针异常啊!经过更改参数,始终无法得到正确结果。

     

    2.无意间从网上找的这篇文章,强烈建议仔细阅读并实践一下这篇文章(http://lavasoft.blog.51cto.com/62575/19241/);

       这对我们理解WindowsJava下的注册表设置方法  有深刻帮助:

     

    3.通过上面文章,发现了http://blog.csdn.net/brilliancezhou/article/details/5425754中的2处BUG:

    1)第14行 有错误:/*定义目录字符串*/    private static String dir = "Directory//shell";  

    2)所有的 //  都应该改成 \\ ;

     

    于是,更改过BUG的代码如下:

    package rightkey;

    importjava.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 rightkey{      
            /*定义目录字符串*/
            private static Stringdir = "Folder\\shell";
            /*注册表键对象*/
            private staticRegistryKey rkey;
            public StringgetDir() {
                   return dir;
            }       
            public voidsetDir(String dir) {
                   this.dir = dir;
            }       
            /*构造函数,打开HKEY_CLASSES_ROOT中的dir*/
            private rightkey() {
                   rkey =Registry.openSubkey(Registry.HKEY_CLASSES_ROOT,dir,RegistryKey.ACCESS_WRITE);
            }
            
            /*创建子目录方法*/
            public voidcreateSubDir(String subDirName,String key, String defaultValue) throwsRegistryException {
                   
                   /*根据传入的参数创建子目录*/
                  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{  
                /*创建对象*/
               rightkey rm = new rightkey();
                /*创建子项CommandPrompt,默认的value值为cmd,那么在文件夹的右键菜单下即会显示cmd*/
              rm.createSubDir("CommandPrompt", "","Test_DOS");           
                /*在CommandPrompt项下创建子项Command,值为(cmd.exe/k cd /"%1/") 也就是单击cmd所要执行的操作*/
               rm.createSubDir("Command", "","cmd.exe /K CD  %1 ");               
    }

    }

     

    另外说明几点:

    1.软件《Registry Workshop 2.31 简体中文版》用着非常方便;建议下载保留,调试用;

    2.在注册表中删除错误/多余的设置,可以用软件《Registry Workshop 2.31 简体中文版》选中待删除项后按Delete键,再按F5即可;

     

    3.Thanks to"http://lavasoft.blog.51cto.com/62575/19241/"的教程和软件;

    展开全文
  • *Java 操作注册表,为文件夹添加右键菜单cmd *author: zhouh  */ import java.io.UnsupportedEncodingException; import com.ice.jni.registry.NoSuchKeyException; import com.ice.jni.registry.RegSt
    测试发现了些BUG,已经修复如下:
    
    /**
    *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 String dir = "Folder\\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", "", "Test_DOS");
                
                /*在CommandPrompt项下创建子项Command,值为(cmd.exe /k cd /"%1/") 也就是单击cmd所要执行的操作*/
                rm.createSubDir("Command", "", "cmd.exe /k cd \"%1\" ");
                //Explorer.exe /e,/root,%L
        }

    }


    展开全文
  • 使用Java添加系统右键菜单

    千次阅读 2013-05-31 00:17:47
    注:ICE_JNIRegistry.dll 和registry.jar这两个文件可在我的资源中下载 ... 如果你在系统中需要经常使用DOS进入某个文件夹,一般的做法就是打开”运行”,在命令文本框中输入cmd,然后再在出现的 DOS界面中

    原文地址:http://blog.csdn.net/brilliancezhou/article/details/5425754

    注: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代码如下:

    [java]  view plain copy
    1. package com;  
    2. /** 
    3. *Java 操作注册表,为文件夹添加右键菜单cmd 
    4. *author: zhouh  
    5. */  
    6. import java.io.UnsupportedEncodingException;  
    7. import com.ice.jni.registry.NoSuchKeyException;  
    8. import com.ice.jni.registry.RegStringValue;  
    9. import com.ice.jni.registry.Registry;  
    10. import com.ice.jni.registry.RegistryException;  
    11. import com.ice.jni.registry.RegistryKey;  
    12. public class RegisterManager{        
    13.         /*定义目录字符串*/  
    14.         private static String dir = "Directory//shell";  
    15.         /*注册表键对象*/  
    16.         private static RegistryKey rkey;  
    17.           
    18.         /*为dir添加set和get方法*/  
    19.         public String getDir() {  
    20.                 return dir;  
    21.         }          
    22.         public void setDir(String dir) {  
    23.                 this.dir = dir;  
    24.         }  
    25.           
    26.         /*构造函数,打开HKEY_CLASSES_ROOT中的dir*/  
    27.         private RegisterManager() {  
    28.                 rkey = Registry.openSubkey(Registry.HKEY_CLASSES_ROOT,      
    29.                 dir ,      
    30.                 RegistryKey.ACCESS_WRITE);  
    31.         }  
    32.           
    33.         /*创建子目录方法*/  
    34.         public void createSubDir(String subDirName,String key, String defaultValue) throws RegistryException {  
    35.                   
    36.                 /*根据传入的参数创建子目录*/  
    37.                 rkey.createSubKey(subDirName, "");  
    38.                 /*打开当前创建的子目录,设置为可写状态*/  
    39.                 rkey = Registry.openSubkey(Registry.HKEY_CLASSES_ROOT,      
    40.                 dir+"//"+subDirName,      
    41.                 RegistryKey.ACCESS_WRITE);  
    42.                 /*设置当前子目录的默认注册表项的值*/  
    43.                 rkey.setValue(new RegStringValue(rkey, key, defaultValue));  
    44.                 /*重新设置当前目录,为方便此目录下再添加子目录*/  
    45.                 this.setDir(dir+"//"+subDirName);  
    46.         }  
    47.     public static void main(String[] args) throws NoSuchKeyException, RegistryException,   
    48. UnsupportedEncodingException{    
    49.             /*创建对象*/  
    50.             RegisterManager rm = new RegisterManager();  
    51.             /*创建子项CommandPrompt,默认的value值为cmd, 那么在文件夹的右键菜单下即会显示cmd*/  
    52.             rm.createSubDir("CommandPrompt""""cmd");  
    53.               
    54.             /*在CommandPrompt项下创建子项Command,值为(cmd.exe /k cd /"%1/") 也就是单击cmd所要执行的操作*/  
    55.             rm.createSubDir("Command""""cmd.exe /k cd /"%1/"");  
    56. }  

    复制代码运行结束后,找到任意一个文件夹,右击此文件夹将会出现cmd菜单项,选择此项将会进入dos,当前目录为此文件夹的目录


    展开全文
  • 对于程序员来说,新建一个cpp文件是再频繁不过的事情了...第一个版本,只能添加c、cpp、java三种后缀。 /* * Author: Haipz * School: HDU * File Name: registry1.0.cpp */ #include #include #include <ct
  • 对于程序员来说,新建一个cpp文件是再频繁不过的事情了...  第一个版本,只能添加c、cpp、java三种后缀。 1 /* 2 * Author: Haipz 3 * School: HDU 4 * File Name: registry1.0.cpp 5 */ 6 #include <cs
  • java swing制作右键菜单

    千次阅读 2015-06-28 17:08:37
    java swing中如何实现右键菜单呢? 直接上代码:/*** java * 设置弹出菜单 * @param qrResultLabel */ private void setPopupMenu(JComponent qrResultLabel) { final MyMenuActionListener myMenuListene

    java swing中如何实现右键菜单呢?
    右键菜单
    直接上代码:

    /*** java
         * 设置弹出菜单
         * @param qrResultLabel
         */
        private void setPopupMenu(JComponent qrResultLabel)
        {
            final MyMenuActionListener myMenuListener=new MyMenuActionListener(this);
            qrResultLabel.addMouseListener(new MouseInputAdapter()
            {
    
                @Override
                public void mouseReleased(MouseEvent e)
                {
                    //                super.mousePressed(e);
                    if (e.getButton() == MouseEvent.BUTTON3)
                    {
                        JPopupMenu textMenu = new JPopupMenu();
                        JMenuItem cleanUpM = new JMenuItem(MenuUtil2.ACTION_STR_CLEANUP);
                        JMenuItem copy22M = new JMenuItem(
                            MenuUtil2.ACTION_IMAGE_COPY);
                        JMenuItem paste22M = new JMenuItem(
                                MenuUtil2.ACTION_IMAGE_PASTE);
                        JMenuItem enlargeM = new JMenuItem(
                                MenuUtil2.ACTION_ENLARGE);
                        JMenuItem reduceM = new JMenuItem(
                                MenuUtil2.ACTION_REDUCE);
    //                    JMenuItem pasteM = new JMenuItem(MenuUtil2.ACTION_STR_PASTE);
    
                        JMenuItem exportM = new JMenuItem(
                            MenuUtil2.ACTION_STR_EXPORT);
                        JMenuItem readQRCodeM = new JMenuItem(
                                MenuUtil2.ACTION_READ_QR_CODE);
                        copy22M.addActionListener(myMenuListener);
                        cleanUpM.addActionListener(myMenuListener);
                        exportM.addActionListener(myMenuListener);
                        enlargeM.addActionListener(myMenuListener);
                        reduceM.addActionListener(myMenuListener);
                        paste22M.addActionListener(myMenuListener);
                        readQRCodeM.addActionListener(myMenuListener);
                        textMenu.add(cleanUpM);
                        textMenu.add(copy22M);
                        textMenu.add(paste22M);
    //                    exportM.add(pasteM);
                        textMenu.add(exportM);
                        textMenu.add(enlargeM);
                        textMenu.add(reduceM);
                        textMenu.add(readQRCodeM);
                        textMenu.show(e.getComponent(), e.getX(), e.getY());
                    }
                }
    
            });
    
        }
    

    注意:
    1,鼠标右键对应的code是:MouseEvent.BUTTON3(3)
    2,弹出菜单要使用JPopupMenu

    展开全文
  • JAVA Jtable 添加右键菜单 参考代码

    千次阅读 2016-09-10 22:02:35
    private JTable table;  //需要一个JPopupMenu 来添加右键菜单的内容  JPopupMenu jpopupMenu = new JPopupMenu();  JMenuItem downMenuItem = new JMenuItem();
  • Windows下在所有的文件添加右键菜单功能 程序添加右键菜单运行并传右键文件全名 bat 传递参数 批处理判断是文件还是文件夹的几种方法 %~dp0是什么意思 Java丨Cmd运行Jar出现乱码问题 Java操作系统剪贴板(Clipboard)...
  • 我这里的菜单内容只有一项。 导包: import javax.swing.JLabel; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JPopupMenu; import java.awt.Component; import ...
  • 给表格添加右键菜单

    千次阅读 2017-07-27 09:22:19
    给表格添加右键菜单
  • Java弹出菜单,为JTextArea添加右键弹出式菜单,实现了复制、粘贴、剪切
  • Ubuntu 添加右键菜单

    千次阅读 2017-05-19 11:45:01
    经常遇到需要用某个脚本或可执行文件打开文件的情况,在 ubuntu 中,经常是 open-in-terminal,然后执行相应命令,想起之前一个工具的 readme 中处理过添加右键的办法,查找一下相关用法: 在$HOME/.local/share/...
  • 用QtCreator用习惯了,总觉得AndroidStudio要稍微不是很方便,跟VisualStudio一样,很多常用的功能,都需要一串快捷键才能做到,感觉就是给不用鼠标的人开发的... 单击此列表中要添加“重新格式化代码”命令的项 单...
  • 在JTable上添加右键菜单

    热门讨论 2010-09-24 23:28:12
    实现JLabel右键进行响应的操作,摆脱按钮响应,大幅度提高界面的美观
  • Cmder添加右键菜单

    千次阅读 2018-05-15 18:25:46
    方法一 先把 Cmder 加到环境变量 ,运行Cmder.exe /REGISTER ALL...方法一存在弊端,无法在磁盘根目录,右键打开cmder 方法二 打开settings—&amp;amp;amp;amp;amp;amp;amp;amp;gt;Integreation 如图填写 ...
  • 给Table增加右键菜单 private MouseInputListener getMouseInputListener(final JTable jTable) { return new MouseInputListener() { public void mouseClicked(MouseEvent e) { ...
  • 一个将有用的小功能加入到右键菜单的burp suite插件
  • 增加系统右键菜单

    2018-04-28 09:45:09
    本文介绍添加系统右键菜单,效果如下图: 原理很简单就是给注册表添加值,以下是添加系统右键菜单所要涉及的值。   KEY值:HKEY_CLASSES_ROOT\*\shell(所有文件的右键菜单)HKEY_CLASSES_ROOT\directory\...
  • 1.文件夹里面 空白处》右键菜单》生成文件清单 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\生成文件清单] [HKEY_CLASSES_ROOT\Directory\Background\shell\生成文件清单\...
  • 一种扩展,它在右键单击上下文菜单添加了一些小功能(一键更新cookie,一键将主机添加到作用域)。 警告 使用此工具之前,请先更改自己的有效负载配置!!! 特别是以“ Action”开头的配置!!! 视频 作者 包裹...
  • excel 自定义菜单 自定义Excel右键菜单 (Customize Excel Right-Click Menus)Do you ever right-click on something in Excel, and the command that you wanted to use isn't on that pop-up menu? For example, ...
  • windows如何将软件的快捷方式添加至鼠标右键菜单 1.打开运行,输入regedit,打开注册表 2.进入注册表 该路径 HKEY_CLASSES_ROOT\Directory\Background\shell 在此目录下添加 项 3.修改项名为对应软件的名称 例如...
  • 1、右键菜单,如图 2、实例-1:最简单的右键菜单 下面我们演示一个通过右键菜单来改变背景和字体颜色的例子。 package zkh.javafx.learn.contextmenu; import javafx.application.Application; import ...
  • 给JTree节点添加右键刷新菜单

    千次阅读 2018-07-20 10:49:22
    不多bb直接贴代码和效果 package swing; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;...import java.awt.event....import java.awt.event.MouseEve...
  • 添加标题栏右键菜单添加标题栏右键菜单添加标题栏右键菜单
  • java右键菜单添加

    千次阅读 2016-06-23 23:50:34
    //创建右键菜单 PopupMenu pop = new PopupMenu(); //创建菜单项组件 CheckboxMenuItem autoWrap = new CheckboxMenuItem("自动换行"); MenuItem copyItem = new MenuItem("复制"); MenuItem pasteItem = new ...
  • //设置右键菜单 MenuItem mi = new MenuItem("exit"); //右键菜单监听 mi.addActionListener(e -> { //点击右键菜单退出程序 System.exit(0); }); pm.add(mi); //设置悬停提示信息 TrayIcon trayIcon = ...
  • Swing-右键菜单

    千次阅读 2019-07-13 22:21:33
    MyFrame : ...4、将菜单项添加右键菜单; 5、添加面板事件处理:当右键点击面板时,出现右键菜单; 6、创建一个监听器,用于表示点击菜单项操作; package swing01; import java.awt.BorderLay...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,831
精华内容 18,332
关键字:

java添加系统右键菜单

java 订阅