我正在嘗試爲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。但是我做了一些研究,並且我不明白我應該怎麼做,以便掃描一個顏色數組。我需要一些能夠非常快速地掃描屏幕的東西,以便捕捉按鈕。
你能幫我嗎?
謝謝。
當你的代碼被調用?在空閒時間?當用戶移動鼠標?檢測紅色按鈕的方法有很多種,例如使用FindWindow()。 –
順便說一句,我的代碼是在一個無限循環。但我想用一個顏色捕捉器,而一個偏移量。所以,當我開始我的代碼時,它會進入循環並檢查紅色按鈕。 – Manitoba
如果此代碼處於無限循環中,則問題不是「GetPixel」。這是事實,你的應用程序不讓其他應用程序有任何CPU時間。 – tenfour