Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在Delphi中设置UIAutomation时出错_Delphi_Ui Automation - Fatal编程技术网

尝试在Delphi中设置UIAutomation时出错

尝试在Delphi中设置UIAutomation时出错,delphi,ui-automation,Delphi,Ui Automation,我正在尝试按照SO的建议使用UIAutomation来代替SendKeys等,并在尝试执行时出现停止显示错误“访问OLE注册表时出错” 我正在Win7Pro 64位(VMWare)虚拟机中运行XE4 以下是有关遇到此错误消息的建议: 我正在使用内置的管理员帐户(代替我第一次遇到错误的管理员帐户) 我在UIAutomationCore.Dll上运行了RegSvr32,它报告“调用RegisterServer成功” 我已将用户帐户控制设置为“从不通知” 我正在使用“以管理员身份运行”启动XE4

我正在尝试按照SO的建议使用UIAutomation来代替SendKeys等,并在尝试执行时出现停止显示错误“访问OLE注册表时出错”

我正在Win7Pro 64位(VMWare)虚拟机中运行XE4

以下是有关遇到此错误消息的建议:

  • 我正在使用内置的管理员帐户(代替我第一次遇到错误的管理员帐户)

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

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

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

在XE4中,我转到Component | Import Component | Import ActiveX Control,单击Add并浏览到\Windows\System32\UIAutomationCore.Dll(或SysWOW64中的版本,我想有一个子问题是我应该尝试哪一个,但它们中的任何一个都会出现相同的错误)。然后单击“打开”,我会看到一个错误弹出窗口,显示“访问OLE注册表时出错”消息。单击Details按钮显示错误发生在TLib180.Bpl中,即对TLibUtils.LoadAndRegisterTypeLibrary的调用


我不确定我是否遗漏了一个步骤或做错了什么…

创建一个类型库,如下所示:

  • 组件|导入组件
  • 导入类型库
  • 选择UIAutomationClient
  • 单击至向导末尾,并在最后一页上选择创建单元
  • 单击“完成”
  • 现在,您将拥有一个名为
    UIAutomationClient\u TLB
    的类型库派生单元,可以像其他单元一样使用它。您可以通过以下方式访问
    IUIAutomation
    界面:

    Automation := CoCUIAutomation.Create;
    
    在这一点上,你就可以开始跑步了


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

    在阅读您的答案之前,我发现了这一点,但还是非常感谢。“您真的不需要更改UAC设置,也不需要运行提升版。”-的确如此。然而,关于“已注册”,我不是100%确定,但我可以发誓在我使用RegSvr32之前,类型库弹出窗口中没有以“uia”开头的内容-我稍后会尝试回滚VM并检查。