我有一个Acer Aspire 5740G,我想拦截硬件按钮。我使用SetWindowsHookEx()
编写了一个C#应用程序。
对于音量按钮,例如,我收到VolumeUp
和VolumeDown
消息,一切都很好。但对于 wifi按钮和蓝牙按钮,我只会收到LBUTTON
,OEMCLEAR
(KeyCode 255)。那么如何区分那两个?
我还读过,这个按钮可能无法访问,因为它们会被视为低于操作系统的 Fn-Keys 。但是有一个名为Launch Manager的Acer软件,它显示OSD消息并显示蓝牙/ wifi标识。因此,必须能够(至少在理论上)在OS级别区分这些按钮。
那么,如何挂钩这些键呢?
答案 0 :(得分:2)
这是一个相关的问题
不知道你是否曾经写过Windows驱动程序。
Windows驱动程序,这是一个悠久的历史。
Modern Windows有两种设备驱动程序模式:
由于您发现这两个按钮具有相同的Windows消息,因此可能由内核模式驱动程序控制。
某些硬件信号可能没有WM_
消息定义,有时它们只是映射到一个相同的Windows消息,但内核模式驱动程序可以区分它们。例如,有大量的Ke
bla bla和IRP_
bla blas;有些甚至只能用C / C ++编写,即本机代码;你可能没办法,除了看看司机。
如果您对Windows驱动程序非常感兴趣,请查看Windows Driver Development,WDK(Windows驱动程序工具包)可免费下载。
最后,如果您强烈需要制造商(宏碁)的技术支持,请发表评论,如果我们与您取得联系,请通知我,我会回复我的电子邮件。