キーボードフック

こんな感じでやってみましたが・・・
コンソールアプリではどうも引っ掛けできない
なにかダイアログだせば、その上でキーを押すとフックできるみたい

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);

}