我们假设用户正在写一些东西,比如说他写了“测试”。在这里,我们可以使用系统Hook或类似的东西来确定写的是什么。但是如果我想确定写的是什么以及这个单词写在什么应用程序上。
示例:
我在记事本中写了hello world,应用程序必须响应 你好世界写在记事本上。
可以在c#中完成?!
答案 0 :(得分:1)
捕获键事件时,可以使用GetForegroundWindow()
获取活动窗口(用户当前正在处理的窗口)的句柄,然后调用GetWindowText()
以获取该窗口的标题
您可以下载this project file from 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
将保留该窗口的标题。