获取是否可以单击元素

时间:2012-02-23 15:24:26

标签: windows ui-automation

我正在构建一个WPF应用程序,它将取代Windows游标。我需要知道的是如果可以点击我的光标下的项目(我现在不想点击它)。

该元素(按钮,链接等...)可以在Windows上的任何位置(桌面图标,其他WPF应用程序,网站......)。我做了一些搜索,看起来我可以在UIAutomation中找到我搜索的内容......但我不知道如何使用它。

我的想法是获取光标的位置然后:

-watch如果他们是一个项目 - 观察是否可以点击该项目

有人有想法吗?

由于

1 个答案:

答案 0 :(得分:0)

通常无法判断是否可以点击某个项目。但是你可以对你的应用做出足够的猜测。

问题与点击工作的方式有关:Windows始终发送一次点击,由应用程序决定是否或如何响应点击。通常形式的背景不会响应 - 但有些人会这样做。通常按钮会响应;但也许有些人没有。某些类型的控件可能会根据您单击的位置做出不同的响应:如果单击文本控件中的链接,它将激活链接;单击文本,它将移动插入点。

所以最好的办法就是始终允许点击发送 - 这就是鼠标的工作原理。

但是如果要显示提示,可以尝试使用UIAutomation来获取AutomationElement.FromPoint,获取其ControlType和IsEnabled属性,如果它类似于Button,ListItem,TabItem等,它是启用后,可能可点击。

如果您只需要对一个或两个特定应用程序进行操作,您可能能够提供可点击或不可用于这些应用程序的完整类型列表,但如果您想使用任何应用程序,我们需要注意的是,你并不总是准确无误,所以即使你没有显示正确的指示器,也应该允许用户覆盖并发送一个点击。