如何将项目添加到文件夹的上下文菜单?


8

我知道如何在单击实际文件夹时添加上下文菜单:

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

但是,单击文件夹中的任何内容怎么办?

就像我在桌面上创建一个新文件夹一样,双击进入该文件夹,然后右键单击任何内容(该文件夹为空),现在我希望在这种情况下显示上下文菜单。


我认为您想要的关键是HKEY_CLASSES_ROOT\Directory\Background
安德鲁·兰伯特

1
thanx @Amazed真的很近...实际上是: [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]
xero 2012年

5
解决了对任何感兴趣的人的问题,这里是.REG文件,可将此功能添加到Windows上下文菜单中: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Shell] @="none"` [HKEY_CLASSES_ROOT\Directory\shell\gitBashHere] [HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere] "Icon"="C:\\icons\\git-gui.ico" "MUIVerb"="git bash here" "Position"="bottom"``[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere\command] [HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere\command] @="C:\\Program Files\\Console2\\Console.exe -d %v"
xero 2012年

2
允许并鼓励您回答自己的问题。如果您解决了问题,请发布答案并接受。
丹尼斯

Answers:


10

对于有兴趣的人,这里是.reg将此功能添加到Windows上下文菜单的文件:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Shell]
@="none"
[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere]
[HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere]
"Icon"="C:\\icons\\git-gui.ico"
"MUIVerb"="git bash here"
"Position"="bottom" 
[HKEY_CLASSES_ROOT\Directory\shell\gitBashHere\command] 
[HKEY_CLASSES_ROOT\Directory\Background\shell\gitBashHere\command]
@="C:\\Program Files\\Console2\\Console.exe -d %v"

(摘自xero的评论

这会将带有命令的命令添加到名为“ git bash here”的上下文菜单中,从而打开控制台。

该命令被添加到以下两个位置:

  • HKEY_CLASSES_ROOT\Directory\shell,右键单击文件夹时的上下文菜单
  • HKEY_CLASSES_ROOT\Directory\background,右键单击文件夹中的“背景”空白区域时的上下文菜单

2
注意默认操作的值“ none”('@ =')如果没有此“ none”,Windows会将添加的操作之一视为默认操作,因此双击目录不会再打开目录而是触发该操作-这使得Windows几乎无法使用。->将“无”设置为默认操作,可以添加上下文菜单项,而无需更改Windows默认行为。

0
void WriteContextMenu(LPSTR key, LPSTR value) {

HKEY hkey=0; DWORD disp;

if(RegCreateKeyEx(HKEY_CLASSES_ROOT, key, 0, NULL, REP_OPTION_NON_VOLATILE, KEY_WRITE,NULL, &hkey, &disp)!=ERROR_SUCCESS) 

{

     if(RegOpenKey(HKEY_CLASSES_ROOT,key,&hkey)!=ERROR_SUCCESS)
    {   

      cout<<"Unable to open Registry"<<key;

        }

}if(RegSetValueEx(hkey,TEXT(""),0,REG_SZ,(LPBYTE)value, strlen(value)*sizeof(char))!=ERROR_SUCCESS)

{

   RegCloseKey(hkey);

       cout<<"Unable to set Registry Value ";

} else{

   cout<<value<<" value has set"<<endl;
}
}int main(){LPSTR key="Folder\\shell\\Testing_App"; 

 LPSTR valueKey="Menu_Title";

 LPSTR Subkey="Folder\\shell\\Testing_App\\command";


/*Here put the path or action you want to perform like you want to
    open cmd  on your context menu so the value id */

    LPSTR valueSubKey="cmd.exe";

    WriteContextMenu(key, ValueKey); 
    WriteContextMenu(Subkey, ValueSubKey);

return 0;}

这将显示您的上下文菜单上的所有文件夹...当你编译这段代码,以便确保您有管理权限。希望这个代码将会对你有所帮助
卡希夫梅奥

1
您能否编辑答案以进一步解释代码的作用?
Burgi

尽管这可以回答问题,但是如果您可以提供解释为什么会这样做会更好。
DavidPostill

实际上,这段代码只会为上下文菜单创建一个新键。键和子键也分别是它们的值。当此代码编译并运行然后在每个文件夹上运行时,它将显示该上下文菜单...
Kashif Meo

但我认为问题REQ改变..它可能会帮助他,但没有确切的解决方案..
卡希夫梅奥

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.