c# - C# UI 自动化焦点事件不适用于记事本++
问题描述
我创建了一个简单的 UI 自动化程序,它会报告程序中的焦点是否发生变化。例如,如果我在 VS 2019 中打开了多个文件,然后单击选项卡以查看程序报告焦点已更改的不同文件。但是,如果我使用 Notepad++ 尝试相同的操作,打开多个文件并单击选项卡以查看不同的文件,它不会报告焦点已更改。
using System.Windows.Automation;
using System.Diagnostics;
namespace FocusChanged
{
class Program
{
static void Main(string[] args)
{
Automation.AddAutomationFocusChangedEventHandler(OnFocusChangedHandler);
Console.WriteLine("Monitoring... Hit enter to end.");
Console.ReadLine();
}
private static void OnFocusChangedHandler(object src, AutomationFocusChangedEventArgs args)
{
Console.WriteLine("Focus changed!");
AutomationElement element = src as AutomationElement;
if (element != null)
{
string name = element.Current.Name;
string id = element.Current.AutomationId;
int processId = element.Current.ProcessId;
using (Process process = Process.GetProcessById(processId))
{
Console.WriteLine(" Name: {0}, Id: {1}, Process: {2}", name, id, process.ProcessName);
}
}
}
}
}
解决方案
推荐阅读
- javascript - 从复选框中删除禁用
- selenium-webdriver - 关于使用 Appium TouchActions 的 ClassCastException
- vb.net - vb.net 检查网页是否在默认浏览器中打开
- java - 使用 MimeMultipart(附件文件 + 文本)和 JBoss 6.3 发送 MimeMessage
- sql-server - 使用 JDBCConnector 和 StoredProcedures 的 T-SQL SQL 注入
- java - 无法弄清楚为什么它会抛出 ConcurrentModificationException
- asp.net-mvc - 是否可以在 EvoPDF / .Net 中使用 Font Awesome 图标?
- c# - 打开 chrome 并自动填充表单域窗体 C#
- operators - 为什么不同语言的运算符不同?
- html - chrome 中的 Macos 特定错误。在 windows chrome 中运行良好