C# 消费全局键事件

Posted

技术标签:

【中文标题】C# 消费全局键事件【英文标题】:C# Consume Global Key Event 【发布时间】:2019-01-01 01:10:54 【问题描述】:

我现在正面临一个艰难的,至少对我来说很艰难!

我正在使用this code 来捕获按键事件,即使窗口失焦,它也能正常工作。

不过,此外,我希望能够在关键事件被当前具有焦点的任何其他应用程序使用之前使用它。

搜索后搜索没有给我带来任何结果,有谁知道这可能是如何完成的?

【问题讨论】:

请问您为什么需要这个? (非常好奇) 哈哈,我想这会出现!我们有用于空客驾驶舱模拟器的 MCDU 的键盘,它们的作用类似于普通的 USB 键盘,但我想单独处理它们。 用户名签出 o7 Low-Level Keyboard Hook in C# @Maverick283 你会看到_proc = HookCallbackSetHook(_proc)。所以HookCallback是消费者。 【参考方案1】:

我确定有一个最简单的方法来解决这个问题(您使用的代码是旧的),但我发现了这个post。 (看最后的代码)

无论如何,您始终可以使用 'KeyEventArgs.Handled = true;' 'KeyDown' 和 'KeyUp' 事件中的属性,以限制键的传播。

【讨论】:

【参考方案2】:

Here 是一个程序的源代码,它捕获窗口上的每个键,记录它,然后将它传递给下一个程序。

您可以将该代码作为起点,并有条件地执行对 CallNextHookEx 的调用以使用密钥。

【讨论】:

以上是关于C# 消费全局键事件的主要内容,如果未能解决你的问题,请参考以下文章

C# VB6 OCX 生成的消费事件

用于全局捕获媒体中心远程特殊键的 C# API

C# 在一次事件中获取的DATATABLE怎么让全局共享?

C# 怎么让鼠标左键点击3次后触发事件?

C# 挂钩以获取原始鼠标/键事件

使用线程处理事件 RabbitMQ 消费者