C#单 - 低级别的键盘挂钩(C# Mono - Low Level Keyboard Hook)

2019-07-04 20:08发布

我使用的代码,我就发现CodeProject.com一个低级别的键盘钩子 。 唯一的问题是它采用外部调用DLL中不单工作。 我想知道是否有人知道的方式来完成同样的事情的代码,但使用.NET两个窗口中运行,并使用单Linux呢?

编辑:澄清我想要做的事:我正在做一个类似的应用程序仪表板 。 该项目坐落在系统托盘中,当用户按下热键,就会弹出所有的小玩意。 因此,该程序没有焦点,所以一般不会赶任何按键动作,所以我使用的是低级别的键盘钩子和我挂钩,用户定义的热键的两个键。 但我使用的是Windows DLL调用为,不以Linux中使用单工作。 所以我想知道如果有一种方法可以做同样的事情,但使用单在Linux下运行?

Answer 1:

这是不可能只使用.NET来实现这个行为。 你必须使用二进制驱动程序在每次开启(在Windows,Linux和Mac OS)上运行的平台。 这可能是可能仅使用的P / Invoke(检测到正在运行的是什么操作系统,调用相应的系统库),这样你就不必分发任何“额外”的DLL / SO / dylib。



Answer 2:

不知道你想要抓住什么,这是很难确定究竟会为你工作。 你可能想看看使用Application.AddMessageFilter。

一个例子是在这里: http://dn.codegear.com/article/30129



文章来源: C# Mono - Low Level Keyboard Hook