我有一個通過ActiveX嵌入按鈕控件的應用程序。該按鈕被由第三方提供,並它實現的的ActiveX接口的整個範圍(其中是IOleInPlaceObject
)。我確實參照了IUnknown
這個按鈕的實現。如何以編程方式通過COM接口激活OLE控件?
我現在面臨的問題是,由對象提供的IOleWindow::GetWindow
函數總是返回一個錯誤;錯誤代碼是0x80004005的這顯然是一個common HRESULT value含義E_FAIL
。不太具描述性。
對於它的價值,該對象還通過IDispatch
實現公開了hWnd
屬性;查詢成功,但該屬性的值始終爲零。
谷歌搜索的位建議hWnd
屬性產生一個有用的值之前,我可能需要「激活」 OLE對象。有誰知道如何做到這一點,有沒有專用的COM接口來激活OLE對象?
有趣的是,按鈕確實似乎有一個窗口句柄,如在Spy++中可見。
更新:我剛剛發現IQuickActivate
這是由我負責的按鈕控制實現的,它可以用來「快速」(啊哈...)啓動一個項目。然而,填寫QACONTAINER
結構似乎很痛苦,所以我現在寧願不這樣做。