Bagaimana Anda menambahkan item ke menu konteks folder?

8

Saya tahu cara menambahkan menu konteks ketika Anda mengklik folder yang sebenarnya:

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

tetapi bagaimana dengan mengklik pada apa pun di folder ?

seperti saya membuat folder baru di desktop saya, klik dua kali untuk memasukkan folder, lalu klik kanan pada tidak ada (folder kosong), sekarang saya ingin menu konteks saya muncul dalam situasi ini.

xero
sumber
Saya pikir kunci yang Anda inginkan adalahHKEY_CLASSES_ROOT\Directory\Background
Andrew Lambert
1
thanx @Amazed yang benar-benar dekat ... sebenarnya: [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]
xero
5
dipecahkan untuk siapa saja yang tertarik di sini. File REG untuk menambahkan fungsionalitas ini ke menu konteks 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
Diizinkan dan didorong untuk menjawab pertanyaan Anda sendiri. Jika Anda memecahkan masalah Anda, poskan jawaban dan terima.
Dennis

Jawaban:

10

Bagi siapa pun yang tertarik, inilah .regfile untuk menambahkan fungsionalitas ini ke menu konteks 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"

(Diambil dari komentar xero )

Ini menambahkan perintah ke menu konteks bernama "git bash here" dengan ikon, yang membuka konsol.

Perintah ditambahkan di bawah keduanya:

  • HKEY_CLASSES_ROOT\Directory\shell, menu konteks ketika Anda mengklik kanan pada folder
  • HKEY_CLASSES_ROOT\Directory\background, menu konteks ketika Anda mengklik kanan pada "latar belakang" ruang kosong saat dalam folder
Dennis
sumber
2
Waspadai nilai "tidak ada" untuk tindakan default ('@ =') Tanpa 'tidak ada' ini, Windows memperlakukan salah satu tindakan yang ditambahkan sebagai default, jadi mengklik dua kali pada direktori tidak lagi membuka direktori tetapi memicu tindakan - yang membuat Windows hampir tidak dapat digunakan. -> Tetapkan 'tidak ada' sebagai tindakan default memungkinkan untuk menambahkan item menu konteks tanpa mengubah perilaku default 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
sumber
ini akan menampilkan menu konteks Anda di semua folder ... saat Anda mengkompilasi kode ini jadi pastikan Anda memiliki hak administratif. Semoga kode ini bermanfaat bagi Anda
Kashif Meo
1
Bisakah Anda mengedit jawaban Anda untuk menjelaskan sedikit lebih banyak apa yang kode Anda lakukan?
Burgi
Meskipun ini mungkin menjawab pertanyaan, itu akan menjadi jawaban yang lebih baik jika Anda bisa memberikan beberapa penjelasan mengapa ia melakukannya.
DavidPostill
sebenarnya kode ini hanya akan membuat kunci baru untuk menu konteks. kunci dan subkunci juga nilainya masing-masing. ketika kode ini dikompilasi dan dijalankan kemudian pada setiap folder itu akan menunjukkan menu konteks itu ...
Kashif Meo
tapi saya pikir pertanyaan req diubah .. mungkin membantunya tetapi bukan solusi yang tepat ..
Kashif Meo