C#Mono-低级键盘钩

时间:2020-03-06 14:46:01  来源:igfitidea点击:

我使用在CodeProject.com上找到的用于低级键盘挂钩的代码。唯一的问题是,它使用的外部DLL调用在mono中不起作用。我想知道是否有人知道一种方法来完成与该代码相同的事情,但是会在使用.net的Windows和使用mono的Linux中运行吗?

编辑:澄清我想做的事情:
我正在制作一个类似Dashboard的应用程序。该程序位于系统托盘中,当用户按下热键时,它将弹出所有小工具。因此该程序没有焦点,因此通常不会捕获任何击键,因此我使用了低级键盘挂钩,并且挂钩了用户定义为热键的两个按键。但是我为此使用了Windows DLL调用,在使用mono的Linux中这是行不通的。所以我想知道是否有一种方法可以做同样的事情,但是会在Linux上使用mono运行吗?

解决方案

在不知道我们要捕获什么的情况下,很难确定什么将对我们有用。我们可能想看看使用Application.AddMessageFilter。

此处是一个示例:http://dn.codegear.com/article/30129

仅使用.Net不可能获得此行为。我们必须为在(Windows,Linux,Mac OS)上运行的每个平台使用二进制驱动程序。可能仅使用P / Invoke(检测正在运行的操作系统,调用适当的系统库),这样就不必分发任何"额外"的dll / so / dylib。