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

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

動詞メソッドを選択する

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

静的動詞メソッド

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

静的動詞 説明
コマンド ライン パラメーターを使用した 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 Explorer ですが、項目をホストする任意のアプリケーションにすることができます。 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

 

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

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

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

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

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

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