Advertisement
Guest User

QTS no. 16 - Callback based keyboard and mouse input

a guest
Aug 18th, 2010
556
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.55 KB | None | 0 0
  1. /*
  2. -----------------------------------------
  3. * Game hacking QTS ( Quickie Tip Series )
  4. * no. 16 - Callback based keyboard and mouse input
  5. -----------------------------------------
  6. * Author: SEGnosis  - GHAnon.net
  7. * Thanks to:
  8. * bitterbanana      - No known site
  9. * Drunken Cheetah   - No known site
  10. * fatboy88      - No known site
  11. * Geek4Ever         - No known site
  12. * learn_more        - www.uc-forum.com
  13. * Novocaine         - http://ilsken.net/blog/?page_id=64
  14. * Philly0494        - No known site
  15. * Roverturbo        - www.uc-forum.com
  16. * SilentKarma       - www.halocoders.com - offline
  17. * Strife        - www.uc-forum.com
  18. * Wieter20      - No known site
  19. */
  20.  
  21. //----------------------------------//
  22.  
  23.  
  24. #include <detours.h>
  25.  
  26.  
  27. //----------------------------------//
  28.  
  29.  
  30. #define HOOK(func,addy) o##func = (t##func)DetourFunction((PBYTE)addy,(PBYTE)hk##func)
  31.  
  32.  
  33. //----------------------------------//
  34.  
  35.  
  36. LRESULT WINAPI hkDispatchMessage( MSG* lpmsg )
  37. {
  38.     WPARAM wParam   = lpmsg->wParam;
  39.     WPARAM lParam   = lpmsg->lParam;
  40.     HWND hWnd       = lpmsg->hwnd;
  41.  
  42.     static POINT ptCursor;
  43.  
  44.     const  DWORD dwLButtonTime = 13379,
  45.                  dwRButtonTime = 13378;
  46.  
  47.     switch( lpmsg->message )
  48.     {
  49.     case WM_TIMER:
  50.             switch( wParam )
  51.             {
  52.             case dwLButtonTime:
  53.                 break;
  54.  
  55.             case dwRButtonTime:
  56.                 break;
  57.             }
  58.         break;
  59.  
  60.     case WM_LBUTTONDOWN:
  61.             SetTimer( hWnd, dwLButtonTime, 50, 0 );
  62.         break;
  63.  
  64.     case WM_LBUTTONUP:
  65.             KillTimer( hWnd, dwLButtonTime );
  66.         break;
  67.  
  68.     case WM_RBUTTONDOWN:
  69.             SetTimer( hWnd, dwRButtonTime, 50, 0 );
  70.         break;
  71.  
  72.     case WM_RBUTTONUP:
  73.             KillTimer( hWnd, dwRButtonTime );
  74.         break;
  75.  
  76.     case WM_MOUSEMOVE:
  77.             ptCursor.x = LOWORD( lParam );
  78.             ptCursor.y = HIWORD( lParam );
  79.         break;
  80.  
  81.  
  82.     case WM_MOUSEWHEEL:
  83.             if( GET_WHEEL_DELTA_WPARAM(wParam) == 120 );
  84.  
  85.             if( GET_WHEEL_DELTA_WPARAM(wParam) == -120 );
  86.         break;
  87.  
  88.  
  89.     case WM_KEYDOWN:
  90.     case WM_SYSKEYDOWN:
  91.             switch( wParam )
  92.             {
  93.             case VK_LEFT:
  94.  
  95.                 break;
  96.  
  97.             case VK_RIGHT:
  98.  
  99.                 break;
  100.  
  101.             case VK_DOWN:
  102.  
  103.                 break;
  104.  
  105.             case VK_UP:
  106.  
  107.                 break;
  108.             }
  109.         break;
  110.  
  111.  
  112.     case WM_KEYUP:
  113.            
  114.         break;
  115.  
  116.  
  117.     case WM_SIZE:
  118.             LOWORD( lParam ); // client width
  119.             HIWORD( lParam ); // client height
  120.         break;
  121.     }
  122.  
  123.     return oDispatchMessage( lpmsg );
  124. }
  125.  
  126.  
  127. //----------------------------------//
  128.  
  129.  
  130. DWORD WINAPI CommandThread( LPVOID )
  131. {
  132.     DWORD dwDispatchMessageAddress = 0;
  133.  
  134.     while( !( dwDispatchMessageAddress = GetProcAddress( GetModuleHandle( "User32.dll" ), "DispatchMessageA" ) ) )
  135.         Sleep( 250 );
  136.  
  137.     HOOK(DispatchMessage,dwDispatchMessageAddress);
  138.  
  139.     return 0;
  140. }
  141.  
  142.  
  143. //----------------------------------//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement