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.