Win32 - 拦截键盘睡眠按钮

时间:2018-01-24 11:18:22

标签: winapi

可以使用SetWindowsHookEx()捕获每个键盘操作,但不能使用睡眠按钮捕获。您可以在控制面板中将其设置为“不执行任何操作”,但我想对其执行一些有用的操作。这可能吗? (我正在使用Das Keyboard 4 Professional)。

1 个答案:

答案 0 :(得分:1)

This old MSDN page列出了电源操作键的扫描码:

  

以下为OnNow硬件定义键盘电源开关的正确扫描码:

Power event 
 Set1:    Make = E0, 5E    Break = E0, DE
 Set2:    Make = E0, 37    Break = E0, F0, 37

Sleep event 
 Set1:    Make = E0, 5F    Break = E0, DF
 Set2:    Make = E0, 3F    Break = E0, F0, 3F

Wake event 
 Set1:    Make = E0, 63    Break = E0, E3
 Set2:    Make = E0, 5E    Break = E0, F0, 5E
     

Set 2中断代码也需要0xE0前缀,否则系统会看到新密钥关闭但看到一些不同的密钥出现。

但是如果你看一下USB HID tables就会有一些叫做“电源控制”的东西

  

电源控制可以使系统进入以下状态:全功率,低功耗和断电

     

电源控制用法   系统控制    集合影响系统   等级权力。

     

系统睡眠   OSC - 当预期的操作是启动系统范围的低时断言   电源模式现在。如果系统已经处于低功耗状态,则没有   影响。

因此键盘可能直接使用USB协议进行睡眠。