【问题标题】:Tracking COM object error in application跟踪应用程序中的 COM 对象错误
【发布时间】:2010-12-23 04:10:03
【问题描述】:

我正在使用一个应用程序,它运行良好。几个月不使用它后,我尝试运行它,但它不起作用。它显示一个消息框,说它不能实例化 COM 对象。

有谁知道如何跟踪 COM 对象中的错误?

【问题讨论】:

    标签: com win32com win32ole


    【解决方案1】:

    您可以使用 ProcessMonitor 并尝试查找可能不正确的注册表项。 另一个选项是使用http://www.moduleanalyzer.com,它会拦截 CoCreateInstance,显示所有创建的 COM 对象和返回值。

    【讨论】:

    • 我试过 ProcessMonitor 但我真的不明白它对我有什么帮助。我查看了注册表项,一切似乎都很好。模块分析器检测到该问题,显示我能够修复再次注册 dll 的 COM 错误。看起来像安装了一个新版本的对象,而旧应用程序要求旧接口不再对该对象有效。注册正确的对象后,应用程序运行顺利!
    【解决方案2】:

    在 COM 对象 DLL 上运行 Depends 工具以验证它具有所有必需的 dll,重新注册 COM dll/exe。

    任何来自调试/日志的 HRESULTS?公寓模型有什么变化吗?

    一经设置,您就无法更改公寓类型。因此,如果对象不能使用其中一个模型,而您尝试 CoCreate 它,它将失败。这就是为什么你永远不会从 DLL 主线程内部调用 CoInit。

    【讨论】:

    • DebugView 没有显示任何错误。是的,我知道 CoCreate 在这种情况下会失败,但我想知道哪个对象在 CoCreateInstance 失败。
    猜你喜欢
    • 2010-09-05
    • 2011-06-17
    • 1970-01-01
    • 2018-10-26
    • 2010-09-19
    • 2023-03-28
    • 1970-01-01
    • 2016-01-24
    • 2015-12-03
    相关资源
    最近更新 更多