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.


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

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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.