Piszę nakładkę na aplikację. Najważniejsze linijki kodu:
//Uruchom aplikację
CreateProcessA("aplikacja.exe",NULL,NULL,NULL,true,NULL,NULL,NULL,&s,&p);
//Znajdź okno, bo znamy tytuł
HWND wnd = FindWindowA(NULL, "Tytuł okna");
//Znajdź przycisk
HWND btn = FindWindowExA(wnd, 0, "TButton", "Napis na przycisku");
//Naciskamy przycisk
SendMessage(btn, BM_CLICK, 0 , 0);
//Znajdujemy pierwszą z kolei listę wyboru
HWND list = FindWindowExA(wnd, 0, "TComboBox", NULL);
//Zaznaczamy pozycję nr 12
SendMessage(list, CB_SETCURSEL, 11,1);
//Akceptujemy zaznaczenie - w niektórych przypadkach potrzeba poniższej linijki
SendMessage(list, WM_COMMAND, MAKEWPARAM(0, CBN_SELCHANGE), (LPARAM)list);
//Dodajemy nową kontrolkę - tutaj przycisk
HWND nowy = CreateWindowEx(0,WC_BUTTON,"Przycisk",WS_CHILD|WS_VISIBLE,20,20,200,70,wnd,(HMENU)1,NULL,0);
To wszystko można osiągnąć bez mechanizmu uchwytów za pomocą funkcji WinAPI i komunikatów. Teraz chcę przechwycić zdarzenia z okien aplikacji. Czy tu już trzeba stosować uchwyty, czy istnieją inne metody?
Jakie znacie sposoby, aby:
- Przechwycić naciśnięcia klawiszy w aplikacji
- Przechwycić kliknięcia przycisków, wybór listy, innych kontrolek
- Przechwycić kliknięcia kontrolek utworzonych przez nakładkę
- Podpiąć własną funkcję pod wybrane zdarzenia, dodać funkcję zwrotną lub przejąć kontrolę nad zdarzeniami
- Dostać się do zmiennych globalnych i wywołać funkcje utworzone przez aplikację