描述:
如何从VC应用程序中获取VB应用程序的FORM中的ActiveX控件的IDispatch接口
解决方案1:
难道非得 要得到 IDISPATCH 接口 ? 或许你用其他的方法一样可以达到你的目的 。
一切都是命运的安排, 凡事不可强求 ,阿密陀佛!
VC中之所以可以通过CWnd::FromHandle(phWnd)获得正确的CWnd*是因为
MFC在线程局部存储中存储了HWND和CWnd*的映射,所以能获得,如果你在你的Dll中另开一线程来调用CWnd::FromHandle(phWnd)的话,将无法获得正确的CWnd*,只有一个临时的CWnd*指针,于事无补
同样的,由于你的VB程序并没有用到MFC,所以不会在线程局部存储中存储HWND和CWnd*的映射,所以无法获得正确的CWnd*。
错误的CWnd*指针,当然也无法获得正确的IDispatch接口指针,因此调用InvokeHelper会获得错误结果
不考虑其它途径的话,你这个问题的重点在于如何从窗口句柄获得控件的IUnknown(IDispatch)接口指针。
个人分析,仅供参考,顺便帮顶
也许可以试试AccessibleObjectFromWindow
或ObjectFromLresult
http://www.yesky.com/403/1938403.shtml
因为vb写的控件根本没有这个接口,vb的com是假的。。。
解决方案5:http://www.vckbase.com/document/viewdoc/?id=1518

