Share via


IMoniker::IsRunning-Methode (objidl.h)

Bestimmt, ob das durch diesen Moniker identifizierte Objekt derzeit geladen und ausgeführt wird.

Syntax

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

Parameter

[in] pbc

Ein Zeiger auf die IBindCtx-Schnittstelle im Bindungskontext, der in diesem Bindungsvorgang verwendet werden soll. Der Bindungskontext speichert Objekte, die während des Bindungsprozesses gebunden sind, enthält Parameter, die für alle Vorgänge mit dem Bindungskontext gelten, und stellt die Mittel bereit, mit denen die Monikerimplementierung Informationen zu ihrer Umgebung abrufen soll.

[in] pmkToLeft

Ein Zeiger auf die IMoniker-Schnittstelle auf dem Moniker links von diesem Moniker, wenn dieser Moniker Teil eines Zusammengesetzten ist. Dieser Parameter wird hauptsächlich von Monikerimplementierern verwendet, um die Zusammenarbeit zwischen den verschiedenen Komponenten eines zusammengesetzten Monikers zu ermöglichen. Monikerclients können normalerweise NULL übergeben.

[in] pmkNewlyRunning

Ein Zeiger auf die IMoniker-Schnittstelle auf dem Moniker, der zuletzt der ausgeführten Objekttabelle (ROT) hinzugefügt wurde. Dies kann NULL sein. Wenn nicht NULL, kann die Implementierung die Ergebnisse des Aufrufs von IMoniker::IsEqual für den parameter pmkNewlyRunning zurückgeben und den aktuellen Moniker übergeben. Mit diesem Parameter sollen IsRunning-Implementierungen aktiviert werden, die effizienter sind als das durchsuchen von ROT, aber die Implementierung kann pmkNewlyRunning ignorieren, ohne schaden zu müssen.

Rückgabewert

Diese Methode kann die standardmäßigen Rückgabewerte E_UNEXPECTED sowie die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Der Moniker wird ausgeführt.
S_FALSE
Der Moniker wird nicht ausgeführt.

Hinweise

Hinweise für Anrufer

Wenn die Geschwindigkeit beim Anfordern von Diensten von dem durch den Moniker identifizierten Objekt wichtig ist, können Sie diese Dienste nur dann verwenden, wenn das Objekt bereits ausgeführt wird (da das Laden eines Objekts in den Zustand "Ausgeführt" zeitaufwändig sein kann). In einer solchen Situation sollten Sie IsRunning aufrufen, um zu bestimmen, ob das Objekt ausgeführt wird.

Für die in verknüpften Objekten gespeicherten Moniker wird IsRunning in erster Linie von der Standardhandlerimplementierung von IOleLink::BindIfRunning aufgerufen.

Hinweise für Implementierer

Um einen Zeiger auf rot zu erhalten, sollte Ihre Implementierung IBindCtx::GetRunningObjectTable für den pbc-Parameter aufrufen. Ihre Implementierung kann dann IRunningObjectTable::IsRunning aufrufen, um zu bestimmen, ob das durch den Moniker identifizierte Objekt ausgeführt wird. Das durch den Moniker identifizierte Objekt muss sich bei der ersten Ausführung mit der ROT registriert haben.

Implementierungsspezifische Hinweise

Implementierung Hinweise
Anti-Moniker Diese Methode überprüft den ROT-Wert, um festzustellen, ob das Objekt ausgeführt wird.
Moniker der Klasse Diese Methode gibt E_NOTIMPL zurück.
Dateimoniker Wenn pmkNewlyRunning ungleich NULL ist, gibt diese Methode TRUE zurück, wenn dieser Moniker gleich diesem Moniker ist. Andernfalls fragt die -Methode den ROT-Wert, ob dieser Moniker ausgeführt wird. Die -Methode ignoriert pmkToLeft.
Generischer zusammengesetzter Moniker Wenn pmkToLeft nicht NULL ist, erstellt diese Methode pmkToLeft mit diesem Moniker und ruft IsRunning für das Ergebnis auf.

Wenn pmkToLeftNULL ist, gibt diese Methode TRUE zurück, wenn pmkNewlyRunning ungleich NULL ist und diesem Moniker entspricht.

Wenn pmkToLeft und pmkNewlyRunning beide NULL sind, überprüft diese Methode den ROT-Wert, um festzustellen, ob der Moniker ausgeführt wird. Wenn ja, gibt die Methode S_OK zurück. Andernfalls ruft er rekursiv IsRunning auf der äußersten rechten Komponente der zusammengesetzten Komponente auf und übergibt den Rest des zusammengesetzten Elements als pmkToLeft-Parameter für diesen Aufruf. Dies behandelt den Fall, in dem der Moniker ein Pseudoobjekt identifiziert, das nicht als ausgeführt registriert ist; Weitere Informationen finden Sie in der Implementierung des Elementmonikers.

Elementmoniker Wenn pmkToLeft NULL ist, gibt diese Methode TRUE zurück, wenn pmkNewlyRunning ungleich NULL ist und diesem Moniker entspricht. Andernfalls überprüft die -Methode den ROT-Wert, um festzustellen, ob dieser Moniker ausgeführt wird.

Wenn pmkToLeft nicht NULL ist, ruft die Methode IMoniker::BindToObject für den parameter pmkToLeft auf und fordert einen IOleItemContainer-Schnittstellenzeiger an. Die -Methode ruft dann IOleItemContainer::IsRunning auf und übergibt die in diesem Moniker enthaltene Zeichenfolge.

OBJREF-Moniker Da OBJREF-Moniker ein ausgeführtes Objekt instance darstellen, gibt diese Methode TRUE zurück, es sei denn, das Objekt wird bekanntlich nicht mehr ausgeführt, weil bei einem letzten Aufruf ein Fehler aufgetreten ist. Die -Methode ignoriert pmkToLeft.
Zeigermoniker Diese Methode gibt immer S_OK zurück, da das durch einen Zeigermoniker identifizierte Objekt immer ausgeführt werden muss.
URL-Moniker Gibt S_OK zurück, wenn dieser Moniker derzeit ausgeführt wird. Andernfalls wird „S_FALSE“ zurückgegeben. Der URL-Moniker bestimmt, ob er ausgeführt wird, indem er zuerst überprüft, ob er dem neu ausgeführten Moniker entspricht, indem er den folgenden Aufruf ausführt: pmkNewlyRunning-IsEqual>. In der Regel handelt es sich bei diesem Aufruf um einen kostengünstigen Vorgang. Wenn dies nicht erfolgreich ist, überprüft der Moniker als Nächstes, ob er mit dem ROT des übergebenen Bindungskontexts registriert ist.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile objidl.h

Weitere Informationen

Imoniker

IOleLink::BindIfRunning

IRunningObjectTable::IsRunning