2 Stimmen

Wie kann ich ein OLE-Steuerelement über COM-Schnittstellen programmatisch aktivieren?

Ich habe eine Anwendung, die eine Schaltflächensteuerung über ActiveX einbettet. Die Schaltfläche wurde von einem Drittanbieter bereitgestellt und implementiert eine ganze Reihe von ActiveX-Schnittstellen (darunter IOleInPlaceObject ). Ich habe einen Hinweis auf die IUnknown Implementierung der Schaltfläche.

Das Problem, das ich habe, ist, dass die IOleWindow::GetWindow Funktion, die von dem Objekt bereitgestellt wird, gibt immer einen Fehler zurück; der Fehlercode ist 0x80004005, was offensichtlich ein gemeinsamer HRESULT-Wert Bedeutung E_FAIL . Nicht zu beschreibend.

Das Objekt stellt außerdem eine hWnd Eigenschaft über seine IDispatch Implementierung; die Abfrage ist erfolgreich, aber der Wert der Eigenschaft ist immer Null.

Nach einigem Googeln kam ich zu dem Schluss, dass ich das OLE-Objekt aktivieren muss, bevor die hWnd Eigenschaft einen nützlichen Wert ergibt. Weiß jemand, wie man das macht? Gibt es eine spezielle COM-Schnittstelle für die Aktivierung von OLE-Objekten?

Interessant ist, dass die Schaltfläche tut scheinen einen Fenstergriff zu haben, wie man in Spionage++ .

UPDATE: Ich habe gerade gefunden IQuickActivate die von der Tastensteuerung, mit der ich mich beschäftige, implementiert wird, und die verwendet werden kann, um einen Gegenstand "schnell" (ähem...) zu aktivieren. Das Füllen des QACONTAINER Struktur scheint ein ziemlicher Aufwand zu sein, also werde ich das jetzt lieber nicht tun.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X