静的または動的ショートカット メニュー メソッドの選択

このトピックは次のように整理されています。

動詞メソッドを選択する

静的動詞メソッドのいずれかを使用してショートカット メニューを実装することを強くお勧めします。

静的動詞メソッド

静的動詞は実装する最も簡単な動詞ですが、引き続き豊富な機能を提供します。 常にニーズを満たす最も簡単なショートカット メニュー メソッドを選択してください。

静的動詞 説明
コマンド ライン パラメーターを含む CreateProcess これは、静的動詞を実装する最も簡単で最も使い慣れた手段です。 プロセスは、選択したファイルと、コマンド ラインとして渡される省略可能なパラメーターを使用して 、CreateProcess 関数の呼び出しを通じて呼び出されます。 これにより、ファイルまたはフォルダーが開きます。
このメソッドには、次の制限があります。
  • コマンド ラインの長さは 2,000 文字に制限され、動詞で処理できる項目の数が制限されます。
  • ファイル システム項目でのみ使用できます。
  • 既に実行されているプロセスの再利用を有効にしません。
  • 動詞を処理するために実行可能ファイルをインストールする必要があります。

DropTarget/IDropTarget COM ベースの動詞のアクティブ化は、インプロセスまたはアウトプロセスのアクティブ化をサポートすることを意味します。 DropTarget/IDropTarget は、 IDropTarget インターフェイスがローカル サーバーによって実装されている場合に、既に実行されているハンドラーの再利用もサポートしています。 また、マーシャリングされたデータ オブジェクトを介して項目を完全に表現し、呼び出し元のサイト チェーンへの参照を提供して、 QueryService を介して呼び出し元と対話できるようにします。
Windows 7 以降: IExecuteCommand 最も直接的な実装方法。 これは COM ベースの呼び出しメソッド (DropTarget など) であるため、このインターフェイスではインプロセスとアウトプロセスのアクティブ化がサポートされます。 動詞は IExecuteCommandIObjectWithSelection を実装し、必要に応じて IInitializeCommand を実装します。 項目はシェル項目配列として直接渡され、呼び出し元からのパラメーターの多くは、呼び出しポイント、キーボードの状態など、動詞の実装で使用できます。
Windows 7 以降:ExplorerCommand/ IExplorerCommand IExplorerCommandProvider を使用してコマンド モジュール コマンドを提供するデータ ソースで、これらのコマンドをショートカット メニューの動詞として使用できるようにします。 このインターフェイスはインプロセス アクティブ化のみをサポートするため、コマンドとショートカット メニューの間で実装を共有する必要があるシェル データ ソースでの使用をお勧めします。

 

Note

IExplorerCommand は、静的動詞と動的動詞のハイブリッドです。 IExplorerCommand は Windows Vista で宣言されましたが、ショートカット メニューに動詞を実装する機能は Windows 7 では初めてです。

 

ファイル関連付け属性の IDropTarget クエリとシェル クエリの詳細については、「 認識される型とアプリケーションの登録」を参照してください。

優先される動的動詞メソッド

次の動的動詞メソッドが推奨されます。

動詞の種類 説明
静的動詞 (前の表に記載) + 高度なクエリ構文 (AQS) この選択は、動的な動詞の可視性を取得します。
Windows 7 以降: IExplorerCommand この選択により、Windows エクスプローラー のコマンド モジュールに表示される動詞とエクスプローラー コマンドの一般的な実装が可能になります。
Windows 7 以降: IExplorerCommandState + 静的動詞 この選択により、動的動詞の可視性も取得されます。 これは、特定の静的動詞を異なる方法で計算するために単純なインプロセス ハンドラーを使用するハイブリッド モデルです。 これは、動的な動作を実現し、インプロセス ロジックの公開を最小限に抑えるために、すべての静的動詞実装メソッドに適用できます。 IExplorerCommandState には、バックグラウンド スレッドで を実行する利点があり、UI のハングを回避できます。 IContextMenu よりもかなり簡単です。

 

推奨されていない動的動詞メソッド

IContextMenu は最も強力ですが、実装する最も複雑な方法でもあります。 これは、呼び出し元のスレッドで実行されるインプロセス COM オブジェクトに基づいています。これは通常、Windows エクスプローラーですが、アイテムをホストする任意のアプリケーションにすることができます。 IContextMenu では、動詞の表示、順序付け、およびカスタム描画がサポートされています。 これらの機能の一部は、コマンドに関連付けられるアイコンや、可視性を処理するための IExplorerCommand など、静的動詞機能に追加されています。

ファイルの種類に動的動詞を登録してファイルの種類のショートカット メニューを拡張する必要がある場合は、「動的動詞を 使用したショートカット メニューのカスタマイズ」に記載されている手順に従います。

ショートカット メニューを拡張する

動詞メソッドを選択した後は、ファイルの種類の静的動詞を登録することで、ファイルの種類のショートカット メニューを拡張できます。 詳細については、「 コンテキスト メニュー ハンドラーの作成」を参照してください。

オペレーティング システムによる動詞メソッドのサポート

オペレーティング システムによる動詞呼び出しメソッドのサポートを次の表に示します。

Verb メソッド Windows XP Windows Vista Windows 7 以降
CreateProcess X X X
DDE X X X
DropTarget X X X
ExecuteCommand X X
ExplorerCommand X
ExplorerCommandState X

 

ショートカット メニュー ハンドラーと複数選択動詞のベスト プラクティス

ショートカット メニュー ハンドラーの作成

動的動詞を使用したショートカット メニューのカスタマイズ

ショートカット (コンテキスト) メニューとショートカット メニュー ハンドラー

ショートカット メニューリファレンス

動詞とファイルの関連付け