处理所有键盘输入(挂钩)

时间:2011-02-04 03:38:12

标签: c++ winapi hook virtual keylogger

我正在创建一个记录所有键盘操作的程序,并将此信息存储到日志文件(Keylogger)中。我似乎无法找到一个好方法。

到目前为止我所拥有的:一个LowLevelKeyboardProc,虚拟密钥代码+正在按下的密钥的扫描代码。

我想要什么:使用这些代码,我将处理和写入有关正在完成的键盘操作的信息。对于隐形键我想要格式:“[SHIFT],[ENTER],[ESC]等对于可见键我只想要它们的Ascii值(大写和小写) ),包括他们是否输入:!@#$%等

我有一些想法,但我不知道如何抓住一切。我有这些信息,我只是不知道如何有效地处理它。

2 个答案:

答案 0 :(得分:1)

请参阅我的帖子:Other Post

我有关于如何安装低级键盘钩子以及如何处理击键的示例代码。

答案 1 :(得分:0)

由于您已经有钩子工作,所以您需要的是从键码到特殊键名称的映射。只需预先填充由密钥代码索引的字符串数组:

const char *map[256];

map[VK_SHIFT] = "[SHIFT]";
map[VK_ENTER] = "[ENTER]";
...

然后在你的钩子函数中,检查键是否是可打印的字符,如果是,直接打印,否则查找键的名称并打印出来:

if (isprint(vkCode))
  yourFile << char(vkCode);
else
  yourFile << map[vkCode];