IAssocHandler::CreateInvoker メソッド (shobjidl_core.h)

現在の選択範囲で関連付けられたハンドラーの呼び出しを有効にする オブジェクトを取得します。 呼び出し側には、現在の選択がサポートされているかどうかを確認する機能が含まれています。

構文

HRESULT CreateInvoker(
  [in]  IDataObject          *pdo,
  [out] IAssocHandlerInvoker **ppInvoker
);

パラメーター

[in] pdo

型: IDataObject*

ハンドラーを呼び出す選択した項目を表す IDataObject へのポインター。 項目が 1 つだけの場合は、 IAssocHandler::Invoke が適している可能性があることに注意してください。 詳細については、「解説」を参照してください。

[out] ppInvoker

型: IAssocHandlerInvoker**

このメソッドから制御が戻るときに、 IAssocHandlerInvoker オブジェクトへのポインターのアドレスが格納されます。 このオブジェクトは、選択した項目が関連付けられたハンドラーでサポートされていることを確認した後、メニュー項目を呼び出すために使用されます。

戻り値

型: HRESULT

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

注釈

IAssocHandler オブジェクトは、通常、 Open With メニューを設定するために使用されます。 これらのメニュー項目のいずれかを選択すると、選択したアプリケーションを起動するためにこのメソッドが呼び出されます。

呼び出しと CreateInvoker

これらのメソッドで使用される IDataObject は、1 つのファイルを表すか、複数のファイルの選択を表すことができます。 すべてのアプリケーションで複数のファイル オプションがサポートされているわけではありません。 そのシナリオをサポートするアプリケーションでは、一度に開くことができるファイルの数やファイルの種類の組み合わせなど、他の制限が課される場合があります。

そのため、多くの場合、アプリケーションはハンドラーを呼び出す前に、ハンドラーが選択をサポートしているかどうかを判断する必要があります。 たとえば、アプリケーションでメニュー項目が有効になるのは、該当する選択がそのハンドラーでサポートされていることがわかっている場合のみです。

一般に、アプリケーションが 1 つの項目での呼び出しをサポートすると仮定しても安全です。このような場合、通常、アプリケーションは IAssocHandler::Invoke を呼び出します。

複数の選択シナリオでは、アプリケーションで IAssocHandler::CreateInvoker を呼び出す必要があります。 このメソッドは IAssocHandlerInvoker オブジェクトを取得します。これにより、呼び出し元のアプリケーションは、選択がサポートされているかどうかを最初にチェックし (SupportsSelection)、次にハンドラーを呼び出すことができます (Invoke)。

IAssocHandler::Invoke は複数のファイルの選択で呼び出すことができますが、処理負荷が大きく、成功の保証がないため、推奨されません。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shobjidl_core.h (Shobjidl.h を含む)

こちらもご覧ください

IAssocHandler

IAssocHandler::Invoke

IEnumAssocHandlers