こんな感じでやってみましたが・・・
コンソールアプリではどうも引っ掛けできない
なにかダイアログだせば、その上でキーを押すとフックできるみたい
LRESULT CALLBACK KeyboardProc(int p_nCode, WPARAM p_wParam, LPARAM p_lParam) { if( p_nCode < 0 || p_nCode == HC_NOREMOVE ){ return ::CallNextHookEx( m_hHook, p_nCode, p_wParam, p_lParam ); } UINT uiMsg; if( p_lParam & 0x80000000 ){ uiMsg = WM_KEYUP; printf("**離した**"); }else{ uiMsg = WM_KEYDOWN; printf("**押した**"); } printf("p_wParam = %x\r\n",p_wParam); ::CallNextHookEx( m_hHook, p_nCode, p_wParam, p_lParam ); return TRUE; } int main(int argc, char* argv[]) { char cBuff[256] = ""; GetConsoleTitle(cBuff,256); HHOOK m_hHook; m_hHook = ::SetWindowsHookEx( WH_KEYBOARD , (HOOKPROC)KeyboardProc , NULL, GetWindowThreadProcessId(FindWindow(NULL,cBuff),NULL) ); if( !m_hHook ){ return FALSE; } while(1){ } (UnhookWindowsHookEx(KeyboardProc); }