私のフック手順(キーボードの場合)では、右Altをクリックすると、プレス時に2つのコードが送信され、リリース時に2つのコードが送信されます。
コード:
LRESULT CALLBACK Recorder::keyboardHookProcedure( int code, WPARAM wParam, LPARAM lParam ) {
if( code < 0 )
return CallNextHookEx( m_mouseHook, code, wParam, lParam );
DWORD _vkCode = reinterpret_cast<KBDLLHOOKSTRUCT*>( lParam )->vkCode;
qDebug( "vkCode: %d, wparam: %d, lparam: %d", _vkCode, wParam, lParam );
return CallNextHookEx( 0, code, wParam, lParam );
}
押すと
vkCode: 162, wparam: 260, lparam: 3398032
vkCode: 165, wparam: 260, lparam: 3398032
リリース時に
vkCode: 162, wparam: 257, lparam: 3398032
vkCode: 165, wparam: 257, lparam: 3398032
さらに、キーを押すとWM_SYSKEYDOWN(260)として送信されますが、離すとwParamはWM_KEYUP(257)であることに注意してください。なに…?なぜそれがそのように機能するのですか?