본문 바로가기

공부/컴퓨터

[MFC] 조합키 눌러진것 알아 내기

반응형
여기 나오는 소스는 전역 키보드 후킹 하는 부분이다.
실제 필요한 부분은 GetAsyncKeyState(VK_XXXX) 부분이고,
눌려진 상태면 아마도 음수가 반환되는것 같다.


LRESULT __declspec(dllexport)__stdcall  CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
        int ScanCode    = (lParam >> 16) & 0x000000ff;                // 91번. 92번 일때가 WinKey 임.
        BOOL bPrevState  = (lParam >> 30) & 0x00000001;   // 0 이면 이전 키를 놓은 상태.
        BOOL bKeyUp      = (lParam >> 31) & 0x00000001;   // 0 이면 현재 누르기 시작한 상태.


        SHORT nPressLWin = GetAsyncKeyState(VK_LWIN);

        if ( nPressLWin < 0 )
        {
                if (ScanCode == 47)
                {
                        CString strTemp;
                        strTemp.Format("%d",ScanCode);
                        AfxMessageBox(strTemp);
                        ::SendMessage(hTargetWnd, WM_WINV, wParam, lParam);
                }
        }

        LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );        
        return  RetVal;
}
반응형