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

8

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

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

mas e quanto a clicar em nada em uma pasta ?

como eu faço uma nova pasta na minha área de trabalho, clique duas vezes para entrar na pasta, então clique direito em nada (a pasta está vazia), agora eu quero o meu contexto menu para aparecer nesta situação.

    
por xero 01.05.2012 / 18:54

3 respostas

9

Para qualquer pessoa interessada, aqui está o arquivo .reg para adicionar essa 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"

(Extraído do comentário do 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 do mouse em uma pasta
  • HKEY_CLASSES_ROOT\Directory\background , o menu de contexto quando você clica com o botão direito do mouse no espaço vazio "background" enquanto está em uma pasta
por 20.03.2017 / 11:04
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;}
    
por 19.04.2016 / 12:52
-2

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

link

Mas, como passar vários diretórios ou arquivos para este menu de contexto como argumentos, pois% 1 está tomando apenas um e quando clicamos em vários arquivos, ele está abrindo as múltiplas vezes executáveis em vez de enviar todos eles como argumentos.

    
por 10.07.2015 / 12:12