0

我们假设用户正在写一些东西,比如说他写了“测试”。在这里,我们可以使用系统钩子或类似的东西来确定写了什么。但是如果我想确定写了什么以及这个词是在哪个应用程序上写的。

例子:

我在记事本中写了 hello world,应用程序必须响应 hello world 是在记事本上写的。

可以在c#中完成?!

4

1 回答 1

1

当您捕获一个关键事件时,您可以使用它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将保留该窗口的标题。

于 2013-05-12T02:54:31.427 回答