首页 > 解决方案 > 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);
             }
         }
     }
 }
}

标签: c#microsoft-ui-automation

解决方案


推荐阅读