IAssocHandler::Invoke メソッド (shobjidl_core.h)
関連付けられたハンドラーを直接呼び出します。
構文
HRESULT Invoke(
[in] IDataObject *pdo
);
パラメーター
[in] pdo
型: IDataObject*
ハンドラーを呼び出す選択した項目を表す IDataObject へのポインター。 複数の項目を選択して IAssocHandler::Invoke を呼び出さないでください。 複数の項目がある場合は、代わりに IAssocHandler::CreateInvoker を呼び出します。 詳細については、「解説」を参照してください。
戻り値
種類: HRESULT
このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。
注釈
IAssocHandler オブジェクトは、通常、[ 開く ] メニューを設定するために使用されます。 これらのメニュー項目のいずれかを選択すると、選択したアプリケーションを起動するためにこのメソッドが呼び出されます。
Invoke と CreateInvoker
これらのメソッドで使用される IDataObject は、1 つのファイルまたは複数のファイルの選択を表すことができます。 すべてのアプリケーションで複数のファイル オプションがサポートされているわけではありません。 そのシナリオをサポートするアプリケーションでは、同時に開くことができるファイルの数やファイルの種類の許容される組み合わせなど、他の制限が課される場合があります。そのため、多くの場合、アプリケーションはハンドラーを呼び出す前に、ハンドラーが選択をサポートしているかどうかを判断する必要があります。 たとえば、アプリケーションでメニュー項目が有効になるのは、該当する選択がそのハンドラーでサポートされていることを確認した場合のみです。
通常、アプリケーションが 1 つの項目での呼び出しをサポートすると仮定すると安全です。そのような場合、アプリケーションは通常、その前提に基づいて IAssocHandler::Invoke を 呼び出します。
ただし、複数の選択シナリオでは、アプリケーションで IAssocHandler::CreateInvoker を呼び出す必要があります。 このメソッドは IAssocHandlerInvoker オブジェクトを取得します。これにより、呼び出し元のアプリケーションは、最初に選択がサポートされているかどうかをチェックし (SupportsSelection)、ハンドラーを呼び出すことができます (Invoke)。
IAssocHandler::Invoke は複数のファイルの選択で呼び出すことができますが、処理負荷が大きく、成功する保証がないため、お勧めしません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | shobjidl_core.h (Shobjidl.h を含む) |