gpt4 book ai didi

c# - 如何监控焦点变化?

转载 作者:可可西里 更新时间:2023-11-01 15:47:41 26 4
gpt4 key购买 nike

好吧,有时我在打字,但很少会发生某些事情偷走焦点的情况,我阅读了一些解决方案(甚至是 VB watch ),但它们不适用于我。是否有任何窗口范围的“句柄”可以处理任何焦点更改?

使用哪种语言、C、C++、VB.NET、C#、任何与 .NET 或 Windows 相关的语言、批处理、PoweShell、VBS 脚本...都没有关系,只要我能够监控每个焦点变化并且将其记录到文件/cmd 窗口/可 window 口中。

类似于:

   void event_OnWindowsFocusChange(int OldProcID, int NewProcID);

会非常有用。或者也许已经有这方面的工具(我找不到?)

最佳答案

一种方法是使用 Windows UI Automation API。它公开了全局焦点更改事件。这是我想出的一个快速示例(在 C# 中)。请注意,您需要添加对 UIAutomationClient 和 UIAutomationTypes 的引用。

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# - 如何监控焦点变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11711400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com