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


8

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

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

mas que tal clicar em nada em uma pasta ?

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


Penso que a chave que você quer éHKEY_CLASSES_ROOT\Directory\Background
— Andrew Lambert

11
thanx @Amazed que estava realmente perto ... na verdade é: [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]
— xero

5
resolvido 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"
— xero

2
É permitido e incentivado a responder suas próprias perguntas. Se você resolveu seu problema, poste uma resposta e aceite-a.
— Dennis

Respostas:


10

Para qualquer pessoa interessada, aqui está o .regarquivo 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"

(Retirado do comentá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 ao clicar 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 "segundo plano" enquanto estiver em uma pasta

2
Esteja ciente do valor "none" para a ação padrão ('@ =') Sem esse 'none', o Windows trata uma das ações adicionadas como padrão; portanto, clicar duas vezes em um diretório não abre mais o diretório, mas aciona a ação. - o que torna o Windows quase inutilizável. -> Definir 'none' como ação padrão permite adicionar itens de menu de contexto sem alterar o comportamento padrão do Windows.

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

isso vai mostrar o seu menu de contexto em todas as pastas ... quando você compilar este código para ter certeza de ter privilégios administrativos .. Espero que este código será útil para você
— Kashif Meo

11
Você poderia editar sua resposta para explicar um pouco mais o que seu código faz?
— Burgi

Embora isso possa responder à pergunta, seria uma resposta melhor se você pudesse fornecer alguma explicação para isso.
— DavidPostill

na verdade, esse código criará apenas uma nova chave para o menu de contexto. chave e subchave também seus valores, respectivamente. quando este código compilado e executado, em seguida, em cada pasta que vai mostrar que o menu de contexto ...
— Kashif Meo

mas acho questão req é alterada .. ele pode ajudá-lo, mas não a solução exata ..
— Kashif Meo

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.