2009-11-18 90 views

回答

2

如果您只是想知道消費者可以調用哪些方法,則可以嘗試使用IDispatch/IDispatchEx。

在COM中,IUnknown上的QueryInterface方法不需要公開它可能返回的接口。你根據自己的IID要求一個,你要麼不明白。 QI在特定COM對象中的實現差異很大,但它應該遵循微軟在這裏描述的模式 - http://msdn.microsoft.com/en-us/library/ms682521%28VS.85%29.aspx

+0

如果記不清楚,使用IDispatch/IDispatchEx,您將在IDL中捕獲oleautomation屬性的接口。 –

2

Dependency Walker將不會顯示接口,因爲唯一的導出是DllGetClassObject,DllRegisterServer等(用於DLL託管的COM)。

正如weismat所說,您可以檢查TLB文件。許多COM對象在可執行文件的資源部分包含嵌入的typelib。使用諸如資源黑客之類的工具,您可以提取TLB並使用LoadTypeLib COM函數獲取指向ITypeLib接口的指針(當然,您可以直接使用LoadTypeLib/LoadTypeLibEx與COM或EXE DLL)。

通過此接口,您可以遍歷其中包含的類型。

+2

儘管如此,評估TLB的內容不會公開有關COM對象可能使用的任何專用接口的信息。 –

+0

私人COM接口不會出現,你是對的。 –