Jak dodać element do menu kontekstowego folderu?

8

Wiem, jak dodać menu kontekstowe po kliknięciu rzeczywistego folderu:

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

ale co z klikaniem niczego w folderze ?

tak jak robię nowy folder na pulpicie, kliknij dwukrotnie, aby wejść do folderu, a następnie kliknij prawym przyciskiem myszy na nic (folder jest pusty), teraz chcę, aby moje menu kontekstowe pojawiło się w tej sytuacji.

Xero
źródło
Myślę, że kluczem jest kluczHKEY_CLASSES_ROOT\Directory\Background
Andrew Lambert
1
thanx @Zdziwiony, że było bardzo blisko ... tak naprawdę to: [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]
xero
5
rozwiązane dla wszystkich zainteresowanych oto plik reg, aby dodać tę funkcjonalność do menu kontekstowego 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
Dozwolone i zachęcane jest odpowiadanie na własne pytania. Jeśli rozwiązałeś problem, opublikuj odpowiedź i zaakceptuj ją.
Dennis

Odpowiedzi:

10

Dla wszystkich zainteresowanych oto .regplik umożliwiający dodanie tej funkcji do menu kontekstowego systemu 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"

(Na podstawie komentarza Xero )

Dodaje to polecenie do menu kontekstowego o nazwie „git bash tutaj” z ikoną, która otwiera konsolę.

Polecenie jest dodawane do obu:

  • HKEY_CLASSES_ROOT\Directory\shell, menu kontekstowe po kliknięciu folderu prawym przyciskiem myszy
  • HKEY_CLASSES_ROOT\Directory\background, menu kontekstowe po kliknięciu prawym przyciskiem myszy pustego miejsca „tła” w folderze
Dennis
źródło
2
Należy pamiętać o wartości „none” dla akcji domyślnej („@ =”) Bez tej opcji „none” system Windows traktuje jedną z dodanych akcji jako domyślną, więc dwukrotne kliknięcie katalogu nie powoduje już otwarcia katalogu, ale wyzwala akcję - co sprawia, że ​​Windows jest prawie bezużyteczny. -> Ustaw „none” jako domyślną akcję, która pozwala dodawać elementy menu kontekstowego bez zmiany domyślnego zachowania 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;}
Kashif Meo
źródło
pokaże to menu kontekstowe we wszystkich folderach ... podczas kompilacji tego kodu, więc upewnij się, że masz uprawnienia administracyjne. Mam nadzieję, że ten kod będzie dla ciebie pomocny
Kashif Meo
1
Czy możesz edytować swoją odpowiedź, aby wyjaśnić nieco więcej, co robi Twój kod?
Burgi
Chociaż może to odpowiedzieć na pytanie, lepszym rozwiązaniem byłoby podanie wyjaśnienia, dlaczego tak się dzieje.
DavidPostill
w rzeczywistości ten kod utworzy nowy klucz do menu kontekstowego. klucz i podklucz również ich wartości. kiedy ten kod zostanie skompilowany i uruchomiony, to w każdym folderze wyświetli to menu kontekstowe ...
Kashif Meo 20.04.16
ale myślę, że pytanie zostało zmienione .. może mu pomóc, ale nie dokładne rozwiązanie ..
Kashif Meo 20.04.16