Как добавить элемент в контекстное меню папки?

8

Я знаю, как добавить контекстное меню, когда вы нажимаете на фактическую папку:

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

а как насчет того, чтобы ничего не нажимать в папке ?

как я создаю новую папку на рабочем столе, дважды щелкните, чтобы войти в папку, затем щелкните правой кнопкой мыши ничего (папка пуста), теперь я хочу, чтобы мое контекстное меню появилось в этой ситуации.

ксеро
источник
Я думаю, что ключ, который вы хотите,HKEY_CLASSES_ROOT\Directory\Background
Эндрю Ламберт
1
спасибо @ Удивлен, что было действительно близко ... это на самом деле: [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]
Xero
5
решена для всех , кто интересуется вот файл .REG , чтобы добавить эту функцию в контекстном меню окна: 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"
ксеро
2
Разрешается и рекомендуется отвечать на ваши собственные вопросы. Если вы решили свою проблему, опубликуйте ответ и примите его.
Деннис

Ответы:

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"

(Взято из комментария ксеро )

Это добавляет команду в контекстное меню с именем «git bash here» со значком, который открывает консоль.

Команда добавлена ​​под обоими:

  • HKEY_CLASSES_ROOT\Directory\shellконтекстное меню при щелчке правой кнопкой мыши по папке
  • HKEY_CLASSES_ROOT\Directory\background, контекстное меню, когда вы щелкаете правой кнопкой мыши на «фоне» пустого пространства в папке
Денис
источник
2
Помните о значении «none» для действия по умолчанию («@ =»). Без этого «none» Windows рассматривает одно из добавленных действий по умолчанию, поэтому двойной щелчок по каталогу больше не открывает каталог, а вызывает действие - что делает Windows практически непригодной для использования. -> Установить 'none' как действие по умолчанию, позволяющее добавлять элементы контекстного меню без изменения поведения окон по умолчанию.
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
Не могли бы вы отредактировать свой ответ, чтобы немного подробнее объяснить, что делает ваш код?
Бурги,
Хотя это может дать ответ на вопрос, было бы лучше, если бы вы могли объяснить, почему это так.
DavidPostill
на самом деле этот код просто создаст новый ключ для контекстного меню. Ключ и подраздел также их значения соответственно. когда этот код скомпилирован и запущен, то в каждой папке будет отображаться это контекстное меню ...
Kashif Meo
но я думаю, что вопрос req изменился .. это может помочь ему, но не точное решение ..
Кашиф Мео
-2

Вот одно решение для всех контекстных меню.

/programming/20449316/how-add-context-menu-item-to-windows-explorer-for-folders/20458056#20458056

Но, как передать несколько каталогов или файлов в это контекстное меню в качестве аргументов, так как% 1 принимает только один, и когда мы нажимаем Ctrl + клик по нескольким файлам, он открывает исполняемые временные блоки вместо того, чтобы посылать их все в качестве аргументов.

user2331760
источник