IMoniker::IsRunning 方法 (objidl.h)

判斷此Moniker所識別的物件目前是否已載入並執行。

語法

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

參數

[in] pbc

系結內容上要用於這個系結作業之 IBindCtx 介面的指標。 系結內容會在系結程式期間快取系結的物件、包含套用至所有作業的參數,並提供Moniker實作應該擷取其環境相關信息的方法。

[in] pmkToLeft

如果這個Moniker是複合的一部分,則為這個 Moniker左邊IMoniker 介面的指標。 此參數主要是由Moniker實作者用來啟用複合Moniker各種元件之間的合作;Moniker 用戶端通常可以傳遞 NULL

[in] pmkNewlyRunning

Moniker 上 IMoniker 介面的指標,最近新增至執行中的對象數據表, (ROT) 。 這可以是 NULL。 如果為非 NULL,實作可以傳回在 pmkNewlyRunning 參數上呼叫 IMoniker::IsEqual 的結果,並傳遞目前的 Moniker。 此參數旨在啟用比搜尋 ROT 更有效率的 IsRunning 實作,但實作可以選擇忽略 pmkNewlyRunning ,而不會造成任何損害。

傳回值

這個方法可以傳回標準傳回值E_UNEXPECTED,以及下列值。

傳回碼 描述
S_OK
Moniker 正在執行。
S_FALSE
Moniker 未執行。

備註

來電者的附註

如果您在向Moniker識別的物件要求服務時,速度很重要,則只有在對象已經執行 (時,您才想要這些服務,因為將物件載入執行中狀態可能是耗時) 。 在這種情況下,您應該呼叫 IsRunning 來判斷物件是否正在執行。

針對儲存在連結物件內的 Monikers,IsRunning 主要是由默認處理程式的 IOleLink::BindIfRunning實作所呼叫。

實作者的注意事項

若要取得 ROT 的指標,您的實作應該在參數上呼叫 IBindCtx::GetRunningObjectTable。 然後,您的實作可以呼叫 IRunningObjectTable::IsRunning ,以判斷 Moniker 所識別的物件是否正在執行。 Moniker 所識別的物件在初次執行時,必須向 ROT 註冊自己。

實作特定附注

實作 備註
反Moniker 這個方法會檢查 ROT,以查看物件是否正在執行。
類別Moniker 這個方法會傳回E_NOTIMPL。
檔案Moniker 如果 pmkNewlyRunning 不是 NULL,則如果 Moniker 等於這個 Moniker,這個方法會傳回 TRUE 。 否則,此方法會詢問 ROT 是否正在執行這個 Moniker。 方法會忽略 pmkToLeft
泛型複合Moniker 如果 pmkToLeft 不是 NULL,這個方法會使用這個 Moniker 撰寫 pmkToLeft ,並在結果上呼叫 IsRunning

如果 pmkToLeftNULL,如果 pmkNewlyRunning 為非 NULL 且等於這個 Moniker,則此方法會傳回 TRUE

如果 pmkToLeftpmkNewlyRunning 都是 NULL,這個方法會檢查 ROT,以查看 Moniker 是否正在執行。 如果是,方法會傳回S_OK;否則,它會以遞歸方式在複合的最右邊元件上呼叫 IsRunning ,並將複合的其餘部分傳遞為該呼叫的 pmkToLeft 參數。 這會處理Moniker識別未註冊為執行中的虛擬物件的情況;如需詳細資訊,請參閱專案Moniker實作。

專案Moniker 如果 pmkToLeft 為 NULL,如果 pmkNewlyRunning 為非 NULL 且等於這個 Moniker,則此方法會傳回 TRUE。 否則,此方法會檢查 ROT,以查看此 Moniker 是否正在執行。

如果 pmkToLeft 不是 NULL,此方法會在 pmkToLeft 參數上呼叫 IMoniker::BindToObject,要求 IOleItemContainer 介面指標。 方法接著會呼叫 IOleItemContainer::IsRunning,並傳遞此 Moniker 內含的字串。

OBJREF Moniker 因為 OBJREF Monikers 代表執行中的物件實例,所以此方法會傳回 TRUE ,除非已知對象因為最近的呼叫失敗而不再執行。 方法會忽略 pmkToLeft
指標 Moniker 這個方法一律會傳回S_OK,因為指標Moniker所識別的對象必須一律執行。
URL Moniker 如果此Moniker目前正在執行,則傳回S_OK。 否則會傳回 S_FALSE。 URL Moniker 會先檢查它是否等於新執行的 Moniker,方法是進行下列呼叫來判斷它是否正在執行:pmkNewlyRunning-IsEqual>。 一般而言,此呼叫是便宜的作業。 如果這不成功,Moniker 接著會檢查是否已向傳入系結內容的 ROT 註冊。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 objidl.h

另請參閱

IMoniker

IOleLink::BindIfRunning

IRunningObjectTable::IsRunning