我知道如何在单击实际文件夹时添加上下文菜单:
[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]
但是如果什么都不点击怎么办?在一个文件夹中?
就像我在桌面上创建一个新文件夹,双击进入该文件夹,然后右键单击任何内容(该文件夹是空的),现在我希望我的上下文菜单在这种情况下出现。
答案1
对于任何感兴趣的人,下面是.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
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;}
答案3
这是所有上下文菜单的解决方案。
但是,如何将多个目录或文件作为参数传递给此上下文菜单,因为 %1 只接受一个,并且当我们按住 ctrl 并单击多个文件时,它会多次打开可执行文件,而不是将它们全部作为参数发送。