1

すべての「jpg」ファイルの Windows エクスプローラーのコンテキスト メニューにコンテキスト メニュー項目を追加したいと考えています。ユーザーがこれをクリックすると、コンテキスト メニュー項目の名前は「process JPEG」になり、メインの実行可能ファイルが呼び出されます。問題は私はすでにメインのc#実行可能ファイルを作成しており、コンテキストメニューからのみ実行するのではなく、独立して実行できます。ユーザーがコンテキストメニューコマンドを選択してクリックしたファイル名またはファイル名をメインの実行可能ファイルに渡したいので、メインの実行可能ファイルが何らかの方法を使用してファイルを取得し、それらを処理できるようになることを確認します。コンテキスト メニューを統合するために次のことを行いました-助けてください

public static void Register(
            string fileType, string shellKeyName, 
            string menuText, string menuCommand)
        {
            Debug.Assert(!string.IsNullOrEmpty(fileType) &&
                !string.IsNullOrEmpty(shellKeyName) &&
                !string.IsNullOrEmpty(menuText) && 
                !string.IsNullOrEmpty(menuCommand));

            // create full path to registry location
            string regPath = string.Format(@"{0}\shell\{1}", fileType, shellKeyName);

            // add context menu to the registry
            using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(regPath))
            {
                key.SetValue(null, menuText);
            }

            // add command that is invoked to the registry
            using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(
                string.Format(@"{0}\command", regPath)))
            {               
                key.SetValue(null, menuCommand);
            }
        }
4

1 に答える 1

0

古いバージョンの Windows でファイル タイプの動詞を登録するには、次のようにします。

  1. ProgIDを取得します。あなたの場合、下のデフォルト値を読んでくださいHKCR\.jpg(これは通常、次のようなものを提供しますjpgfile
  2. あなたの動詞コマンドを下に書いてくださいHKCR\%ProgId%\shell\%YourVerb%\command

XP 以降では、ProgID を制御せずに SystemFileAssociations の下に補助動詞を登録できます。

  1. あなたの動詞コマンドを下に書いてくださいHKCR\SystemFileAssociations\.jpg\shell\%YourVerb%\command

動詞コマンドは通常"c:\full\path\to\yourapp.exe" "%1"、Windows によって %1 がファイル名に置き換えられます。アプリケーションはコマンドラインを解析する必要があります。

同時に複数のファイルを開くことを適切にサポートするには、DDE または IDropTarget (またはWin7+ では IExecuteCommand)を使用することをお勧めします。

于 2012-05-15T05:26:28.893 に答える