Witam, piszę program(w zasadzie to bot), który pobiera zrzut całego ekranu, skanuje jego część pixel po pixelu oraz klika myszką i wpisuje znaki z klawiatury. Problem jest taki, że po kilku minutach działania programu komputer zaczyna spowalniać, zwłaszcza aplikacja, na której są wywoływane te akcje(głównie gimp). Użycie procesora przez tego bota wynosi około 50-60%, pamięci ram około 1MB.
Korzystam z biblioteki WinAPI, kolejne zrzuty ekranu są wykonywane po zrobieniu i przeskanowaniu poprzedniego zrzutu.
Kod robiący zrzut ekranu:
HBITMAP hBitmap = NULL;
HDC hDesktopdc, hBitmapdc;
HBITMAP hOriginal;
hDesktopdc = GetWindowDC( HWND_DESKTOP );
...
nWid = 656; // szerokość i wysokość skanowanego obszaru
nHt = 460;
hBitmap = CreateCompatibleBitmap( hDesktopdc, nWid, nHt );
hBitmapdc = CreateCompatibleDC( hDesktopdc );
hOriginal =( HBITMAP ) SelectBitmap( hBitmapdc, hBitmap );
BitBlt( hBitmapdc, 0, 0, nWid, nHt, hDesktopdc, nlPx, nlPy, SRCCOPY );
Przy skanowaniu bitmapy korzystam z getpixel, po wykonaniu każdego zrzutu ekranu czyszczę uchwyty.
Symulację przycisków wykonuję za pomocą sendinput, natomiast kliknięcia myszą za pomocą setCursorPos oraz mouse_event.
Całe pobranie zrzutu ekranu, jego skanowanie oraz operacje na klawiaturze i myszce wykonywane są w jednym osobnym wątku.
Macie jakieś sugestie w jaki sposób mógłbym zoptymalizować ten program?
Dodam, że program nie jest pisany aby w jakikolwiek sposób zaszkodzić innym osobom, nie jest to żaden spambot ani nic podobnego. Uczę się w Technikum Informatycznym i piszę ten program na ocenę celującą. Program wykonuje akcje na GIMP'ie oraz obiekcie flash w przeglądarce(skanowanie obrazu oraz kilka szybkich kliknięć).
Pozdrawiam i z góry dziękuję za pomoc :)
PS. Jeszcze odnośnie tego problemu z zamulaniem komputera. Wydaje mi się, że gdy fizycznie poruszę myszką gdy program wciąż pracuje to komputer lekko się "odmula".