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


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 + клик по нескольким файлам, он открывает исполняемые временные блоки вместо того, чтобы посылать их все в качестве аргументов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.