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,以及下列值。
傳回碼 | 描述 |
---|---|
|
Moniker 正在執行。 |
|
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 。
如果 pmkToLeft 為 NULL,如果 pmkNewlyRunning 為非 NULL 且等於這個 Moniker,則此方法會傳回 TRUE。 如果 pmkToLeft 和 pmkNewlyRunning 都是 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 |