【问题标题】:app in background read keys pressed by user后台应用程序读取用户按下的键
【发布时间】:2010-02-18 21:13:33
【问题描述】:

我想做一个在后台运行的应用程序并读取用户按下的所有键并将其保存在文件中。 我开始在 Win 表单中编写它并使用 keys Pressed 事件,但是当表单聚焦时它可以工作:/

这是另一种方法吗?我听说过 Windows 服务,但我从不使用它:/

【问题讨论】:

  • 这是一个有点邪恶的问题,因此我将其评分。我建议你为此想出一个好的商业案例,或者试试谷歌。
  • 商业案例:第 1 步)收集 Facebook 密码。步骤 3) 利润
  • 键盘记录并不总是不道德的。大家不要这么自以为是:)
  • @Jonathan 但是键记录不止一个应用程序?我认为步骤 1-3 正在发挥作用:-)

标签: c# keylogger


【解决方案1】:

您可以借助以下方法做到这一点:

我不知道你的原因,但我只是希望它们“好”。

【讨论】:

  • 也许它的答案很愚蠢,但朋友让我做那个应用程序,对我来说它只是一个新的编程冒险,可以学习新的东西。现在我拒绝他!我真是个傻瓜:/我最好花时间学习 WPF ......对不起,伙计们!
【解决方案2】:

在进行大量研究以寻找用于实现此目的的好代码后,我决定创建自己的 C# Keylogger API。它非常简单干净:

api.CreateKeyboardHook((character) => { Console.Write(character); });

您只需要传递一个回调,API 就会返回用户按下的键,其中包括:用户当时所在的屏幕。显然,它在后台运行。

更多详情:https://github.com/fabriciorissetto/KeystrokeAPI

【讨论】:

    【解决方案3】:

    我假设你想拦截 all 关键事件到 all 窗口:

    我不会为此推荐 C#。您需要使用 Win32/64 API,这可以完成,但您最好使用 Visual C++ / 没有辅助轮的东西。

    有几种方法可以做到这一点。到目前为止,最简单的方法是为键盘事件注册一个钩子。实现基本服务并在主循环/事件处理程序中处理按键事件。您也可以在紧密的轮询循环中强制键盘状态,但这会使 CPU 哭泣。

    有 1,000,001 种方法可以在没有管理员权限的情况下安装您自己的键盘驱动程序,但假设您走这条路,您将需要自己找到一个。

    我非常怀疑stackoverflow 上的任何人会帮助您创建键盘记录器。您将需要深入了解 Win32 API 的内部,并且很可能需要自己弄清楚。如果你有扎实的 C 背景并不难。 Windows 的“安全性”只不过是烟雾和镜子。

    【讨论】:

      猜你喜欢
      • 2018-04-06
      • 1970-01-01
      • 2012-05-26
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多