Como você adiciona um item ao menu de contexto de uma pasta?

Como você adiciona um item ao menu de contexto de uma pasta?

Eu sei como adicionar um menu de contexto quando você clica em uma pasta real:

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

mas que tal clicar em nadaem uma pasta?

como se eu criasse uma nova pasta na minha área de trabalho, clique duas vezes para entrar na pasta e clique com o botão direito em nada (a pasta está vazia), agora quero que meu menu de contexto apareça nesta situação.

Responder1

Para quem estiver interessado, aqui está o .regarquivo para adicionar esta funcionalidade ao menu de contexto do 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"

(Tirado decomentário de xero)

Isso adiciona um comando ao menu de contexto chamado “git bash here” com um ícone, que abre um console.

O comando é adicionado em ambos:

  • HKEY_CLASSES_ROOT\Directory\shell, o menu de contexto quando você clica com o botão direito em uma pasta
  • HKEY_CLASSES_ROOT\Directory\background, o menu de contexto quando você clica com o botão direito no espaço vazio "fundo" enquanto está em uma pasta

Responder2

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;}

Responder3

Aqui está uma solução para todos os menus de contexto.

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

Mas, como passar vários diretórios ou arquivos para este menu de contexto como argumentos, pois% 1 está pegando apenas um e quando pressionamos Ctrl + clicamos em vários arquivos, ele abre o executável várias vezes em vez de enviar todos eles como argumentos.

informação relacionada