【问题标题】:Error attempting to set up UIAutomation in Delphi尝试在 Delphi 中设置 UIAutomation 时出错
【发布时间】:2014-06-20 16:56:27
【问题描述】:

我正在尝试按照 SO 的建议使用 UIAutomation 代替 SendKeys 等,并得到显示停止错误“访问 OLE 注册表时出错”,但我尝试这样做。

我在 Win7Pro 64 位 (VMWare) VM 中运行 XE4。

在此处和其他地方遵循有关遇到此错误消息的建议:

  • 我使用的是内置管理员帐户(代替我第一次遇到错误的我自己的管理员帐户)。

  • 我在 UIAutomationCore.Dll 上运行 RegSvr32,它报告“调用 RegisterServer 成功”。

  • 我已将用户帐户控制设置为“从不通知”

  • 我正在使用“以管理员身份运行”启动 XE4

在 XE4 中,我转到组件 |导入组件 |导入 ActiveX 控件,单击添加并浏览到 \Windows\System32\UIAutomationCore.Dll (或 SysWOW64 中的版本,我想一个子问题是我应该尝试哪一个,但我得到与它们中的任何一个相同的错误)。然后我单击打开,我收到一个错误弹出窗口,显示“访问 OLE 注册表时出错”消息。单击详细信息按钮显示错误发生在 TLib180.Bpl 中,即对 TLibUtils.LoadAndRegisterTypeLibrary 的调用。

我不确定我是错过了一步还是做错了什么......

【问题讨论】:

    标签: delphi ui-automation


    【解决方案1】:

    像这样创建一个类型库:

    1. 组件 |导入组件
    2. 导入类型库
    3. 选择 UIAutomationClient
    4. 点击向导结束,在最后一页选择创建单元
    5. 点击完成

    您现在将拥有一个名为UIAutomationClient_TLB 的类型库派生单元,您可以像使用其他任何单元一样使用它。您可以通过以下方式访问IUIAutomation 接口:

    Automation := CoCUIAutomation.Create;
    

    到那时你就可以开始运行了。

    您不需要注册任何东西。这是一个已经注册的系统组件。您真的不需要更改 UAC 设置或运行升级。

    【讨论】:

    • 我在阅读您的答案之前发现了这一点,但无论如何还是非常感谢。 “你真的不需要更改 UAC 设置,或者运行升级。” - 的确。但是,关于“已经注册”,我不能 100% 确定,但我可以发誓在我使用 RegSvr32 之前,类型库弹出窗口中没有任何以“uia”开头的内容 - 我会尝试回滚 VM稍后再检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    相关资源
    最近更新 更多