如何判断ActiveX控件接口在客户端应用程序中是否起作用

How to determine ActiveX control interface has function in client application

我们正在我们的应用程序中使用第 3 方 ActiveX 控件,最近根据我们的要求,他们在 ActiveX 控件界面中添加了新功能,我们正在尝试在我们的应用程序中访问这些功能。由于某些原因,我们有可能无法部署我们的第 3 方 ActiveX 控件,但我们正在部署我们的应用程序。所以旧的第 3 方 ActiveX 没有新功能,但我们正在使用这些功能的应用程序正在尝试访问新功能。因此,我们会遇到一些不一致的行为,例如崩溃或消息错误框。 所以我们想了解是否有任何方法可以确定我们的应用程序中是否存在第 3 方 ActiveX 控件的功能?因此,基于此,我们希望避免调用这些函数。 谢谢。

嗯,你可以获取类型库信息,尝试读取和遍历它来判断函数是否存在。

或者,你可以通过IDispatch::Invoke调用函数,看看是否失败。如果失败了,就不要再调用了,调用回退函数。

所以,它没有为两个不同的界面提供单独的 Guid 吗?从技术上讲,它应该......但有时供应商不会为更新的界面提供新的 Guids......我恳求 5th.

它应该工作的方式是你想要的接口的 QueryInterface 并使用它。