用于保存按下的键的动态缓冲区 - c++



im 为公司构建安全实现时,需要捕获在特定窗口中按下的所有键,并将它们保存在缓冲区中,以便每 5 分钟将它们转储到文件中。

然后,每 7 分钟通过邮件发送一次日志并删除文件。这样做是一个好的选择吗?有没有更好的选择?

缓冲区是为了防止在擦除文件时使用文件。

呈现给我的问题是,我应该为此目的使用哪种缓冲区?它必须是动态的,因为我不知道在保存文件之前会按多少键。

或者有没有办法在每次文件变满时将静态缓冲区转储到文件中?

简单的 std::vector 可以用于此目的,因为它会自动增长,并且其增长策略可以很好地处理您的场景。您也可以使用 std::list,但将矢量保存到文件中可能会更容易。 对于每次按键,我都会存储一些结构来保存有关按键事件的信息。如果 yoy 在 Windows 上,那么简单地存储您处理的每条键盘消息的 lParam 和 wParam 可能是有意义的。您需要 wParam 来存储每个键附带的额外信息,例如按下某个键时的 Ctrl+Alt。 例如:

#include <windows.h>
struct keypress
{
UINT lParam; // The character code of the key. 
UINT wParam; // The repeat count, scan code, extended-key flag etc.
};
typedef std::vector<keypress> keystore;

你也可以使用字符串,但它宁愿不要,这里需要字符串。如果您只是简单地输入简单的文本,那么即使使用简单的东西也可以typedef std::vector<char> keystore;

最新更新