смысл моего кода в том, чтобы я нажал клавишу f1, и он отсканирует 500 пикселей вниз и 500 пикселей и поместит их в массив (он просто занимает поле размером 500 на 500 экрана). затем после этого, когда я нажму на конец, он будет нажимать только на черный цвет или ... на что я его установил.
во всяком случае, он делал странные вещи, и я не могу понять, почему:
#include <iostream>
#include <windows.h>
using namespace std;
COLORREF rgb[499][499];
HDC hDC = GetDC(HWND_DESKTOP);
POINT main_coner;
BYTE rVal;
BYTE gVal;
BYTE bVal;
int red;
int green;
int blue;
int ff = 0;
int main()
{
for(;;)
{
if(GetAsyncKeyState(VK_F1))
{
cout << "started";
int a1 = 0;
int a2 = 0;
GetCursorPos(&main_coner);
int x = main_coner.x;
int y = main_coner.y;
for(;;)
{
//cout << a1 << "___" << a2 << "\n";
rgb[a1][a2] = GetPixel(hDC, x, y);
a1++;
x++;
if(x > main_coner.x + 499)
{
y++;
x = main_coner.x;
a1 = 0;
a2++;
}
if(y > main_coner.y + 499)
{
ff = 1;
break;
}
}
cout << "done";
break;
}
if(ff == 1)
break;
}
for(;;)
{
if(GetAsyncKeyState(VK_END))
{
GetCursorPos(&main_coner);
int x = main_coner.x;
int y = main_coner.y;
int a1 = -1;
int a2 = -1;
for(;;)
{
x++;
a1++;
rVal = GetRValue(rgb[a1][a2]);
gVal = GetGValue(rgb[a1][a2]);
bVal = GetBValue(rgb[a1][a2]);
red = (int)rVal; // get the colors into __int8
green = (int)gVal; // get the colors into __int8
blue = (int)bVal; // get the colors into __int8
if(red == 0 && green == 0 && blue == 0)
{
SetCursorPos(main_coner.x + x, main_coner.y + y);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Sleep(100);
}
if(x > main_coner.x + 499)
{
a1 = 0;
a2++;
}
if(y > main_coner.y + 499)
{
Sleep(100000000000);
break;
}
if(GetAsyncKeyState(VK_CONTROL))
{
Sleep(100000);
break;
}
}
}
}
for(;;)
{
if(GetAsyncKeyState(VK_END))
{
break;
}
}
return 0;
}
кто-нибудь увидит, что не так с моим кодом :(
(не стесняйтесь добавлять теги)