【问题标题】:How to Invoke Shortcuts Keys in the UI Automation? / .NET如何在 UI 自动化中调用快捷键? / 。网
【发布时间】:2010-11-24 14:06:18
【问题描述】:

我正在编写程序来自动化 win32 表单。我正在使用 Microsoft UI 自动化库。我不知道如何获取和调用该表单上的预定义快捷键。现在我只需获取 MenuItem 的 AutomationElement 并调用单击该元素。 有什么解决办法吗?有人这样做吗?

【问题讨论】:

    标签: .net winforms winapi ui-automation


    【解决方案1】:

    据我所知,AutomationElementInformation 具有 AcceleratorKeyAccessKey 属性。
    部分摘自 MSDN:

    AutomationElement::AutomationElementInformation::AcceleratorKey
    调用与元素关联的操作的键组合序列。

    和:

    AutomationElement::AutomationElementInformation::AccessKey
    与元素相关联的字符,用于激活该元素。

    之后你可以使用SendKeys 来模拟按键。

    另一种方法是使用 keybd___event,但是,AFAIK,它已被弃用,Microsoft 建议改用 SendInput。可能会对你有所帮助。

    【讨论】:

    • 感谢 AcceleratorKey 和 AccessKey。这很有帮助。但是我不能使用 SendKeys,因为使用 UI 自动化库是使用 Win32 表单时的另一种方法。我有 AutomationElemnt 并且可以获取它的模式以与控件类型属性进行交互。就我而言,我有 MainWindow AutomationElement,它有两种可用的模式:WindowPattern 和 TransformPattern。并且使用这种模式没有办法模拟 SendKeys。所以,我还是不明白如何使用快捷键。
    【解决方案2】:

    您应该激活主窗口,并调用 SendKeys::Send 将密钥发送到活动窗口。 它是 SendKeys 类中的静态方法,因此,将键发送到窗口不需要主窗口的 AutomationElement。

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 2019-12-01
      相关资源
      最近更新 更多