IExecuteCommand
COM公式ドキュメント
コマンド動詞に関連する状態やパラメーターを設定するメソッドと、その動詞を呼び出すメソッドを公開します。
解説(Remarks)
実装するタイミング
選択された項目に対してアクションを実行する動詞を呼び出す手段としてこのインターフェイスを選択した場合に、このインターフェイスを実装します。項目は IObjectWithSelection::SetSelection を通じて Shell 項目配列として渡されるため、オブジェクトは IObjectWithSelection も実装する必要があります。使用するタイミング
IExecuteCommand のメソッドを直接呼び出さないでください。ユーザーが項目に対してアクションを実行しようとしたとき、Windows エクスプローラーが IExecuteCommand のメソッドを呼び出します。Execute を除き、このインターフェイスのメソッドはシステム情報をハンドラーに渡す点に注意してください。システム自体がこれらのメソッドを呼び出し、システムの設定や状態に基づいてパラメーターを適切に設定します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
CTRL キーと SHIFT キーの現在の状態に基づいて値を設定します。
| grfKeyState | DWORD | in | キーが押されているかどうかを示す、以下のいずれか一方または両方のフラグ。 MK_CONTROLCTRL キーが押されています。 MK_SHIFTSHIFT キーが押されています。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
動詞に対するパラメーター値を指定します。
| pszParameters | LPWSTR | in | パラメーター値を含む文字列へのポインター。この文字列の形式と内容は、呼び出される動詞によって決まります。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
表示に使用する座標を設定します。
| pt | POINT | in | コマンドが選択されたショートカットメニューを呼び出すためにユーザーが右クリックした位置のスクリーン座標。アプリケーションはこの情報を利用して任意の UI を表示できます。これは特にマルチモニター環境で役立ちます。既定の位置は既定モニターの中央です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
指定したウィンドウの表示状態を設定します。
| nShow | INT | in | ShowWindow 関数の nCmdShow パラメーターに指定できる任意の値を指定できます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
選択された Shell 項目に関連する UI を表示するかどうかを指定します。
| fNoShowUI | BOOL | in | 関連する UI の表示をブロックする場合は TRUE、UI を表示する場合は FALSE。既定値は FALSE です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
新しい作業ディレクトリを設定します。
| pszDirectory | LPWSTR | in | 新しい作業ディレクトリの完全修飾パスを含む、null 終端文字列へのポインター。この値が NULL の場合は、現在の作業ディレクトリが使用されます。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
選択された項目に対して動詞を呼び出します。このインターフェイスの他のメソッドを呼び出した後に、このメソッドを呼び出してください。
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IExecuteCommand "{7F9185B0-CB92-43C5-80A9-92277A4F7B54}"
#usecom global IExecuteCommand IID_IExecuteCommand "{}"
#comfunc global IExecuteCommand_SetKeyState 3 int
#comfunc global IExecuteCommand_SetParameters 4 wstr
#comfunc global IExecuteCommand_SetPosition 5 int
#comfunc global IExecuteCommand_SetShowWindow 6 int
#comfunc global IExecuteCommand_SetNoShowUI 7 int
#comfunc global IExecuteCommand_SetDirectory 8 wstr
#comfunc global IExecuteCommand_Execute 9
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。