C++ 右ALT发送两个虚拟键代码

C++ 右ALT发送两个虚拟键代码,c++,winapi,hook,C++,Winapi,Hook,在我的钩子程序(用于键盘)中,当我单击right alt时,它会在按下时向我发送两个代码,在释放时发送两个代码: 守则: LRESULT CALLBACK Recorder::keyboardHookProcedure( int code, WPARAM wParam, LPARAM lParam ) { if( code < 0 ) return CallNextHookEx( m_mouseHook, code, wParam, lParam );

在我的钩子程序(用于键盘)中,当我单击right alt时,它会在按下时向我发送两个代码,在释放时发送两个代码:

守则:

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: 257, lparam: 3398032
vkCode: 165, wparam: 257, lparam: 3398032

此外,请注意,当您按下该键时,它会将其作为WM\u SYSKEYDOWN(260)发送,但当您释放它时,wParam是WM\u keydup(257)。什么。。。?为什么它会以这种方式工作?

这是因为右alt键(alt-GR)是两个键(alt和CTRL)的快捷方式


您得到的是WM\U SYSKEYDOWN但WM\U KEYUP,因为消息就是这样定义的-如果您希望得到WM\U SYSKEYUP,那么当您释放与ALT键一起按下的键时,您会得到它-

这是因为右ALT键(ALT-GR)是两个键的快捷方式-ALT和CTRL


您得到的是WM\U SYSKEYDOWN,但WM\U KEYUP,因为消息就是这样定义的-如果您希望得到WM\U SYSKEYUP,那么当您释放与ALT键一起按下的键时,就会得到它-

这很容易。。。xD,但是问题的第二部分呢?为什么按sys键并释放为normal键?另一个问题,为什么ALT-GR+DEL不显示任务管理器?ALT-GR-DEL与ctrl-ALT-DEL不一样(更多),因为它的处理级别低于普通键组合。以前是这样的,那太容易了。。。xD,但是问题的第二部分呢?为什么按sys键并释放为normal键?另一个问题,为什么ALT-GR+DEL不显示任务管理器?ALT-GR-DEL与ctrl-ALT-DEL不一样(更多),因为它的处理级别低于普通键组合。以前是这样的,IIRC
vkCode: 162, wparam: 257, lparam: 3398032
vkCode: 165, wparam: 257, lparam: 3398032