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 .reg
arquivo 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 pastaHKEY_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.
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.