如何挂钩笔记本的硬件钥匙?

时间:2013-02-24 08:47:19

标签: c# keyboard hook pinvoke device-driver

我有一个Acer Aspire 5740G,我想拦截硬件按钮。我使用SetWindowsHookEx()编写了一个C#应用程序。

对于音量按钮,例如,我收到VolumeUpVolumeDown消息,一切都很好。但对于 wifi按钮蓝牙按钮,我只会收到LBUTTONOEMCLEAR(KeyCode 255)。那么如何区分那两个

我还读过,这个按钮可能无法访问,因为它们会被视为低于操作系统的 Fn-Keys 。但是有一个名为Launch Manager的Acer软件,它显示OSD消息并显示蓝牙/ wifi标识。因此,必须能够(至少在理论上)在OS级别区分这些按钮。

那么,如何挂钩这些键呢?

1 个答案:

答案 0 :(得分:2)

这是一个相关的问题

不知道你是否曾经写过Windows驱动程序。

Windows驱动程序,这是一个悠久的历史。

Modern Windows有两种设备驱动程序模式:

由于您发现这两个按钮具有相同的Windows消息,因此可能由内核模式驱动程序控制。

某些硬件信号可能没有WM_消息定义,有时它们只是映射到一个相同的Windows消息,但内核模式驱动程序可以区分它们。例如,有大量的Ke bla bla和IRP_ bla blas;有些甚至只能用C / C ++编写,即本机代码;你可能没办法,除了看看司机。

如果您对Windows驱动程序非常感兴趣,请查看Windows Driver Development,WDK(Windows驱动程序工具包)可免费下载。

最后,如果您强烈需要制造商(宏碁)的技术支持,请发表评论,如果我们与您取得联系,请通知我,我会回复我的电子邮件。