IMoniker::IsRunning メソッド (objidl.h)

このモニカーによって識別されたオブジェクトが現在読み込まれ、実行されているかどうかを判断します。

構文

HRESULT IsRunning(
  [in] IBindCtx *pbc,
  [in] IMoniker *pmkToLeft,
  [in] IMoniker *pmkNewlyRunning
);

パラメーター

[in] pbc

このバインド操作で使用されるバインド コンテキスト上の IBindCtx インターフェイスへのポインター。 バインド コンテキストは、バインド プロセス中にバインドされたオブジェクトをキャッシュし、バインド コンテキストを使用するすべての操作に適用されるパラメーターを含み、モニカー実装がその環境に関する情報を取得する手段を提供します。

[in] pmkToLeft

このモニカーが複合の一部である場合、このモニカーの左側にあるモニカーの IMoniker インターフェイスへのポインター。 このパラメーターは、複合モニカーのさまざまなコンポーネント間の協力を可能にするために、主にモニカー実装者によって使用されます。モニカー クライアントは通常 、NULL を渡すことができます。

[in] pmkNewlyRunning

実行中のオブジェクト テーブル (ROT) に最後に追加されたモニカー上の IMoniker インターフェイスへのポインター。 NULL を指定できます。 NULL 以外の場合、実装は pmkNewlyRunning パラメーターで IMoniker::IsEqual を呼び出し、現在のモニカーを渡した結果を返すことができます。 このパラメーターは、ROT を検索するよりも効率的な IsRunning 実装を有効にすることを目的としていますが、実装では、害を与えることなく pmkNewlyRunning を 無視することを選択できます。

戻り値

このメソッドは、E_UNEXPECTED標準の戻り値と、次の値を返すことができます。

リターン コード 説明
S_OK
モニカーが実行されています。
S_FALSE
モニカーが実行されていません。

注釈

呼び出し元へのメモ

モニカーによって識別されたオブジェクトからサービスを要求するときに速度が重要な場合は、オブジェクトが既に実行されている場合にのみ、それらのサービスが必要になる場合があります (実行中の状態にオブジェクトを読み込むには時間がかかる可能性があるため)。 このような場合は、 IsRunning を呼び出して、オブジェクトが実行されているかどうかを判断する必要があります。

リンク オブジェクト内に格納されているモニカーの場合、 IsRunning は主に IOleLink::BindIfRunning の既定のハンドラーの実装によって呼び出されます。

実装者へのメモ

ROT へのポインターを取得するには、実装で pbc パラメーターで IBindCtx::GetRunningObjectTable を呼び出す必要があります。 その後、実装で IRunningObjectTable::IsRunning を呼び出して、モニカーによって識別されたオブジェクトが実行されているかどうかを判断できます。 モニカーによって識別されるオブジェクトは、最初に実行を開始したときに ROT に自身を登録している必要があります。

実装固有の注意事項

実装 メモ
アンチモニカー このメソッドは ROT をチェックして、オブジェクトが実行されているかどうかを確認します。
クラス モニカー このメソッドは、E_NOTIMPLを返します。
ファイル モニカー pmkNewlyRunningNULL 以外の場合、モニカーがこのモニカーと等しい場合、このメソッドは TRUE を返します。 それ以外の場合、メソッドは ROT に対して、このモニカーが実行されているかどうかを確認します。 メソッドは pmkToLeft を無視します。
汎用複合モニカー pmkToLeftNULL 以外の場合、このメソッドは pmkToLeft をこのモニカーで構成し、結果に対して IsRunning を呼び出します。

pmkToLeftNULL の場合、pmkNewlyRunning が NULL 以外で、このモニカーと等しい場合、このメソッドは TRUE を返します。

pmkToLeftpmkNewlyRunning の両方が NULL の場合、このメソッドは ROT をチェックしてモニカーが実行されているかどうかを確認します。 その場合、メソッドは S_OKを返します。それ以外の場合は、複合の右端のコンポーネントで IsRunning を再帰的に呼び出し、その呼び出しの pmkToLeft パラメーターとして複合の残りの部分を渡します。 これは、モニカーが実行中として登録されていない擬似オブジェクトを識別するケースを処理します。詳細については、アイテム モニカーの実装に関するページを参照してください。

アイテム モニカー pmkToLeft が NULL の場合、pmkNewlyRunningNULL 以外で、このモニカーと等しい場合、このメソッドは TRUE を返します。 それ以外の場合、メソッドは ROT をチェックして、このモニカーが実行されているかどうかを確認します。

pmkToLeft が NULL 以外の場合、メソッドは pmkToLeft パラメーターで IMoniker::BindToObject を呼び出し、IOleItemContainer インターフェイス ポインターを要求します。 次に、 メソッドは IOleItemContainer::IsRunning を呼び出し、このモニカーに含まれる文字列を渡します。

OBJREF モニカー OBJREF モニカーは実行中のオブジェクト インスタンスを表しているため、このメソッドは、最近の呼び出しが失敗したため、オブジェクトが実行されなくなったことがわかっている場合を除き 、TRUE を 返します。 メソッドは pmkToLeft を無視します。
ポインター モニカー ポインター モニカーによって識別されるオブジェクトは常に実行されている必要があるため、このメソッドは常にS_OKを返します。
URL モニカー このモニカーが現在実行されている場合は、S_OKを返します。 それ以外の場合は S_FALSE を返します。 URL モニカーは、最初に pmkNewlyRunning-IsEqual> という呼び出しを行って、それが新しく実行されているモニカーと等しいかどうかを確認することによって実行されているかどうかを判断します。 通常、この呼び出しは安価な操作です。 これが成功しない場合、モニカーは次に、渡されたバインド コンテキストの ROT に登録されているかどうかを確認します。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー objidl.h

こちらもご覧ください

Imoniker

IOleLink::BindIfRunning

IRunningObjectTable::IsRunning