我想做一个在后台运行的应用程序并读取用户按下的所有键并将其保存在文件中。 我开始用Win表单编写它并使用按键Pressed事件,但它在表单聚焦时起作用:/
这是另一种方法吗?我听说过Windows服务,但我从不使用它:/
答案 0 :(得分:4)
你可以借助这些来做到这一点:
我不知道你的理由,但我只是希望他们“好”。
答案 1 :(得分:2)
在进行了大量研究以寻找用于实现此目的的良好代码之后,我决定创建自己的 C#Keylogger API 。这很简单干净:
api.CreateKeyboardHook((character) => { Console.Write(character); });
您只需要传递一个回调,API将返回用户按下的键,其中包括:用户当时的屏幕。显然,它适用于后台。
答案 2 :(得分:1)
我假设你要拦截所有关键事件到所有窗口:
我不建议使用C#。您需要使用Win32 / 64 API,这可以完成,但是最好不要使用Visual C ++ /没有训练轮的东西。
有几种方法可以做到这一点。到目前为止,最简单的方法是为键盘事件注册一个钩子。实现基本服务并处理主循环/事件处理程序中的按键事件。你也可以在紧密的轮询循环中强制执行键盘状态,但这会让CPU哭。
有1,000,001种方法可以在没有管理员权限的情况下安装自己的键盘驱动程序,但是你需要自己找一个,假设你走的是这条路。
我严重怀疑stackoverflow上的任何人都会帮助您创建一个关键记录器。您将需要深入了解Win32 API的内容,并且可能会自己弄清楚。如果你有一个坚实的C背景,这并不难。 Windows“安全”只不过是烟雾和安全。镜。