【问题标题】:Intercept keyboard input截取键盘输入
【发布时间】:2015-08-25 19:25:44
【问题描述】:

我正在尝试制作一个自动英语到西班牙语的翻译器。

我想做的是,当有人在键盘上键入时,它会取消他们正在键入的内容,并将其存储在我的 C# 应用程序中的字符串中。

无论用户类型如何,都将使用 Sendkeys.Send() 翻译和重新输入(西班牙语)。

它需要在应用程序之外工作,所以如果他们使用任何其他应用程序,它就可以工作。

我的计划是让他们尝试打字,然后在他们打字时将其翻译成西班牙语。

【问题讨论】:

  • 作为用户,我认为这是一个糟糕的主意。如果没有其他原因,我肯定想看看我输入的内容,以确认我输入正确。
  • @FirebladeDan OP 听起来他想按字处理 - 例如“将其存储在字符串中”。尽管对这样的可行性存有疑虑,但“如何捕获键盘输入?”的核心问题(和问题)仍然存在。
  • 拦截按键是相当粗略的事情。事情很快就会失控。
  • @user2864740 非常正确。当我听到“拦截按键”时,我只是本能地畏缩
  • @user2864740 这不是题外话,因为它是关于键盘挂钩的(它是重复的 - 快速搜索出现了几个问题)。我也认为这是题外话,因为它要求提供教程。我投票结束不是因为我鄙视这个想法(我这样做),而是因为上述原因。

标签: c# windows google-translate


【解决方案1】:

我会研究 Windows Hooks:https://support.microsoft.com/en-us/kb/318804。这将是在应用程序之外拦截击键的唯一方法。您要做的是使用低级键盘挂钩接收所有关键消息。对于您不关心的任何击键,您将调用 CallNextHookEx。对于您确实关心的击键,您将返回一个虚拟返回(通常为 1)。这将防止击键传播。然后,您将保存该击键的值,每当听到空格时,您就会将必须的单词转换为西班牙语。

如有任何问题,请随时给我发消息!我广泛使用过键盘和鼠标挂钩。

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多