Advertisement
egor230

HHOOK MouseHook 2

Nov 10th, 2022 (edited)
1,282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | Gaming | 0 0
  1. #include <Windows.h>
  2. #include <TlHelp32.h>
  3. #include<iostream>
  4.  
  5. using namespace std;
  6.  
  7. HWND window_handle = NULL;// идентификатор окна.
  8. HHOOK MouseHook;// хук для мыши.
  9. BOOL WINAPI HandlerRoutine(_In_ DWORD dwCtrlType) {
  10.     if (dwCtrlType == CTRL_CLOSE_EVENT) { UnhookWindowsHookEx(MouseHook); }
  11.     return 1;};// события для завершения работы.
  12.  
  13. LRESULT __stdcall LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam) {  // код hook-точки идентификатор сообщения координаты мыши
  14.     if (nCode >= 0) {
  15.         switch (wParam) {
  16.         case WM_RBUTTONDOWN: {printf(" ok!\n\n");
  17.             return -1; break;
  18.         }
  19.         case WM_RBUTTONUP: {
  20.             return -1; break;
  21.         }
  22.         case WM_LBUTTONDBLCLK: {break; return 0; };
  23.                break;
  24.         }
  25.     }   return CallNextHookEx(MouseHook, nCode, wParam, lParam);
  26. };
  27.  
  28.  
  29. BOOL __stdcall EnumWindowsCallback(HWND hwnd, LPARAM lParam) {// найти идентификатор окна.
  30.     DWORD process;  GetWindowThreadProcessId(hwnd, &process);
  31.     if (process == lParam) {    window_handle = hwnd;   return FALSE;   }
  32.     return TRUE;
  33. };
  34.  
  35. void GetWindowHandle(LPARAM processID) {EnumWindows(EnumWindowsCallback, processID);};
  36.  
  37. int GetProcessByName(char* process_name) { DWORD proc_id = 0;   PROCESSENTRY32 process;
  38.  
  39.     HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  40.     if (Process32First(snapshot, &process)) {// получить идентификатор процесса.
  41.         while (Process32Next(snapshot, &process)) {
  42.             if (_stricmp(process.szExeFile, process_name) == 0) {
  43.                 proc_id = process.th32ProcessID;//Идентификатор процесса.
  44.                 GetWindowHandle(proc_id);   SetForegroundWindow(window_handle);
  45.  
  46.                 printf("hWnd found!\n\n");
  47.                 break;
  48.             }
  49.         }
  50.     } CloseHandle(snapshot);    MSG msg; cout << proc_id << endl;
  51.     HANDLE proc_handle = GetModuleHandle((LPCSTR)process_name);// дескриптор указанного модуля.
  52.  
  53.     SetWindowsHookEx(WH_MOUSE_LL, LowLevelMouseProc, (HINSTANCE)proc_handle, GetThreadId(proc_handle));
  54.     while (GetMessage(&msg, NULL, 0, 0))
  55.     {
  56.         TranslateMessage(&msg);
  57.         DispatchMessage(&msg);
  58.     }
  59.     return 0;
  60. };
  61.  
  62.  
  63. int main() {  char process_name[32] = "notepad.exe";
  64.    
  65.   DWORD pID = GetProcessByName(process_name); //Получить id процесса.
  66.  
  67.     return 0;
  68. };
  69.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement