我们假设用户正在写一些东西,比如说他写了“测试”。在这里,我们可以使用系统钩子或类似的东西来确定写了什么。但是如果我想确定写了什么以及这个词是在哪个应用程序上写的。
例子:
我在记事本中写了 hello world,应用程序必须响应 hello world 是在记事本上写的。
可以在c#中完成?!
当您捕获一个关键事件时,您可以使用它GetForegroundWindow()
来获取活动窗口(用户当前正在处理的窗口)的句柄,然后调用GetWindowText()
以获取该窗口的标题。
您可以从 codeproject 下载此项目文件。在 HookManager.Windows.cs 文件中添加以下内容:
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
然后在关键捕获事件中,您可以检索用户输入的窗口:
var sb = new StringBuilder(100);
var hCurrentWindow = HookManager.GetForegroundWindow();
HookManager.GetWindowText(hCurrentWindow, sb, 100);
sb
将保留该窗口的标题。