フォルダーのコンテキストメニューにアイテムを追加するにはどうすればよいですか?


8

実際のフォルダーをクリックしたときにコンテキストメニューを追加する方法を知っています。

[HKEY_CLASSES_ROOT\Directory\shell\commandNameHere]

しかし、フォルダ内の何もクリックしないのどうですか?

デスクトップに新しいフォルダーを作成するように、ダブルクリックしてフォルダーに入り、何もないところ(フォルダーが空)を右クリックして、この状況でコンテキストメニューを表示します。


あなたが望む鍵は次のHKEY_CLASSES_ROOT\Directory\Background
アンドリューランバート

1
本当に近かったありがとう@Amazedは...それは実際にある: [HKEY_CLASSES_ROOT\Directory\Background\shell\commandNameHere]
Xeroなど

5
この機能をWindowsコンテキストメニューに追加するための.REGファイルは、ここで興味のある人のために解決されています: 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
あなた自身の質問に答えることは許可され、奨励されています。問題を解決した場合は、回答を投稿して受け入れます。
Dennis

回答:


10

興味のある方の.regために、この機能をウィンドウのコンテキストメニューに追加するためのファイルを次に示します。

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のコメントから引用

これにより、「git bash here」という名前のコンテキストメニューにアイコンが付いたコマンドが追加され、コンソールが開きます。

コマンドは両方の下に追加されます:

  • HKEY_CLASSES_ROOT\Directory\shell、フォルダを右クリックしたときのコンテキストメニュー
  • HKEY_CLASSES_ROOT\Directory\background、フォルダ内で「背景」の空のスペースを右クリックしたときのコンテキストメニュー

2
デフォルトアクション( '@ =')の値 "none"に注意してください。この 'none'がない場合、Windowsは追加されたアクションの1つをデフォルトとして処理するため、ディレクトリをダブルクリックしてもディレクトリは開かれず、アクションがトリガーされます。 -Windowsがほとんど使用できなくなります。->デフォルトのアクションとして「none」を設定すると、ウィンドウのデフォルトの動作を変更せずにコンテキストメニュー項目を追加できます。

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

1
あなたは可能性があり、編集もう少しあなたのコードが何をするのかを説明するためにあなたの答えを?
ブルギ

これは質問に答える可能性がありますが、なぜそうなるのか説明を提供できれば、より良い答えになります。
DavidPostill

実際には、このコードはコンテキストメニューの新しいキーを作成するだけです。キーとサブキーの値もそれぞれ。このコードがコンパイルされて実行されると、すべてのフォルダでそのコンテキストメニューが表示されます...
Kashif Meo

しかし、質問reqは変更されたと思います..それは彼を助けるかもしれませんが、正確な解決策ではありません..
Kashif Meo

-2

以下は、すべてのコンテキストメニューに対する1つの解決策です。

/programming/20449316/how-add-context-menu-item-to-windows-explorer-for-folders/20458056#20458056

しかし、%1は引数としてこのコンテキストメニューに複数のディレクトリまたはファイルを渡す方法は1つしか取らず、複数のファイルをCtrl +クリックすると、それらのすべてを引数として送信するのではなく、複数の実行可能ファイルを開くことになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.