我想创建一个 C# 应用程序,它根据当前具有焦点的应用程序更改内容。因此,如果用户使用的是 Firefox,我的应用程序就会知道这一点。同样适用于 Chrome、Visual Studio、TweetDeck 等。
这是否可能,如果可能 - 我将如何实现它?
我觉得我的要求太多了 - 但值得一试。
非常感谢。
最佳答案
这可以在纯 .NET 中使用 Automation framework 完成这是 WPF 的一部分。添加对 UIAutomationClient
和 UIAutomationTypes
的引用并使用 Automation.AddAutomationFocusChangedEventHandler
,例如:
public class FocusMonitor
{
public FocusMonitor()
{
AutomationFocusChangedEventHandler focusHandler = OnFocusChanged;
Automation.AddAutomationFocusChangedEventHandler(focusHandler);
}
private void OnFocusChanged(object sender, AutomationFocusChangedEventArgs e)
{
AutomationElement focusedElement = sender as AutomationElement;
if (focusedElement != null)
{
int processId = focusedElement.Current.ProcessId;
using (Process process = Process.GetProcessById(processId))
{
Debug.WriteLine(process.ProcessName);
}
}
}
}
关于C#:检测哪个应用程序具有焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2183541/