8

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

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

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

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

3 ответа3

9

Для тех, кто заинтересован, вот .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 , контекстное меню, когда вы щелкаете правой кнопкой мыши на "фоновом" пустом месте в папке
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;}
-2

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

https://stackoverflow.com/questions/20449316/how-add-context-menu-item-to-windows-explorer-for-folders/20458056#20458056

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .