Я пытаюсь сделать автокликер для приложения Windows. Он работает хорошо, но невероятно медленно! В настоящее время я использую метод «getPixel», который перезагружает массив каждый раз, когда он вызывается.
Вот мой текущий код:
hdc = GetDC(HWND_DESKTOP);
bx = GetSystemMetrics(SM_CXSCREEN);
by = GetSystemMetrics(SM_CYSCREEN);
start_bx = (bx/2) - (MAX_WIDTH/2);
start_by = (by/2) - (MAX_HEIGHT/2);
end_bx = (bx/2) + (MAX_WIDTH/2);
end_by = (by/2) + (MAX_HEIGHT/2);
for(y=start_by; y<end_by; y+=10)
{
for(x=start_bx; x<end_bx; x+=10)
{
pixel = GetPixel(*hdc, x, y);
if(pixel==RGB(255, 0, 0))
{
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(50);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(25);
}
}
}
По сути, он просто сканирует диапазон пикселей на экране и запускает событие мыши, если обнаруживает красную кнопку.
Я знаю, что есть другие способы получить цвет пикселя, например, bitblt. Но я провел некоторые исследования, и я не понимаю, как я должен это делать, чтобы сканировать цветовой массив. Мне нужно что-то, что очень быстро сканирует экран, чтобы поймать кнопку.
Не могли бы вы мне помочь?
Спасибо.
GetPixel
. Это тот факт, что ваше приложение не позволяет другим приложениям использовать процессорное время. - person tenfour   schedule 09.05.2012