天天看點

串講筆記:Hook

 目前程序的hook

//

HHOOK g_hHookMouse = NULL;

//

LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lParam )

{

 return 1;

}

//

HHOOK g_hHookKeybord = NULL;

//

HWND g_hWnd = NULL;

//

LRESULT CALLBACK KeybordProc( int nCode, WPARAM wParam, LPARAM lParam )

{

 if( VK_F2 == wParam )

 {

  //::SendMessage( g_hWnd, WM_CLOSE,0, 0 );

  ::UnhookWindowsHookEx( g_hHookKeybord );

  ::UnhookWindowsHookEx( g_hHookMouse );

 }

 // if( VK_SPACE == wParam || VK_RETURN == wParam )

 if( VK_F4 == wParam && (1 == ( lParam >> 29  & 1 ) ) )

  return 1;

 else

  return CallNextHookEx( g_hHookKeybord,  nCode, wParam, lParam );

}

InitDialog(...)

{

//

 g_hHookMouse  = SetWindowsHookEx( WH_MOUSE, MouseProc, NULL, ::GetCurrentThreadId() );

 //

 g_hWnd = m_hWnd;

 g_hHookKeybord = SetWindowsHookEx( WH_KEYBOARD, KeybordProc, NULL, ::GetCurrentThreadId() );

}

繼續閱讀