【问题标题】:Getting precise focused element in c# [duplicate]在c#中获取精确的焦点元素[重复]
【发布时间】:2016-10-01 04:41:02
【问题描述】:

我无法弄清楚如何让 c# 在窗口中获取焦点元素。我有另一个程序的窗口,其中有两个文本框、一个下拉菜单和两个按钮。我需要能够打开这个程序,将其拉到前面,然后填写两个文本框并以编程方式从下拉列表中进行选择。

我可以使用 SetForegroundWindow 将窗口向前拉,然后使用 SendKeys 填写内容并进行导航,但由于我并不总是知道光标将从哪个框开始,因此我需要能够确定它在哪里已将其拉到前面以正确填充它们。

有什么想法吗?

【问题讨论】:

  • WinForms,WPF?当您键入时,其中一个文本框不是已经有焦点了吗?
  • 你在使用UIAutomation吗?
  • 我已经编辑了(希望)更清晰一点。 UI 框不是我的——它是外部专有软件的一部分。其中一个框确实有焦点,但我现在正在处理的脚本需要知道要正确填写哪个框。我没有使用 UIAutomation。

标签: c# .net


【解决方案1】:

这里没有内存和伪代码。

在表单内部,您应该能够使用 this.ActiveControl 来获取该信息,这应该为您提供丰富的其他信息,例如控件的名称、类型等。

【讨论】:

  • 我会调查的。 this/Control.ActiveControl 可以用于外部应用程序吗?我正在使用的这个窗口不是由我的代码创建的,只是与之交互,这就是一些困难的来源。到目前为止,我从窗口中得到的最多的是窗口本身的 IntPtr,但我不确定我能用它做什么。
  • 值得在外部尝试,老实说我从来没有用过那个用例,所以我不想把你引向错误的方向。如果我尝试一下,我一定会回复的!
  • 挖掘 MSDN,至少它看起来是在正确的轨道上。到目前为止,我测试过的所有活动/焦点/键盘焦点功能都只给了我一个窗口。 Control 属性和方法至少处理实际的 UI 元素。
猜你喜欢
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
相关资源
最近更新 更多