22. september 2005 - 19:40Der er
12 kommentarer og 1 løsning
Pixel genkendelse..
Hej Eksperten.. Jeg fik en underlig idé om at lave et program.. Som automatisk klikker når en pixel har en bestemt farvekode.. - Altså.. F.eks et popup kommer op på skærmen et tilfældigt sted.. Så finder programmet ud af om den rammer den farve såen at musen automatisk klikker der.. - Programmering med Musen er intet problem.. Men er der nogle som har en idé til hvordan jeg får programmet til at genkende en pixelfarve på skærmen ? Og eventuelt angiver den X Y position pixelen er..
Det fungere fint nu.. Eller.. Bortset fra en fejl.. Når farverne er på 255,0,0 ramser den en masse pixels kordinater op.. Det er oss fint nok.. Men når jeg F.eks åbner paint og laver en farve der inde og taster RGB ind på den.. F.eks 129, 29, 32 - Så kommer der intet frem :S
Eller.. nej.. Den her kode sætter cursoren et helt andet sted på skærmen :S Altså nede i højre hjørne hver gang.. Når den burde sætte cursoren ved den fundne pixel Har den her kode nu: #include <windows.h> #include <iostream> using namespace std;
COLORREF ToFindColor = RGB(107, 0, 140); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { const int Width = GetSystemMetrics(SM_CXFULLSCREEN); const int Height = GetSystemMetrics(SM_CYFULLSCREEN); POINT pt; RECT rc;
HDC dc = GetDC(0); int x, y; for(y = 0; y < Height; y++) for(x = 0; x < Width; x++) if(GetPixel(dc, x, y) == ToFindColor)
cout << "Found at: " << x << ", " << y << " \n"; GetCursorPos(&pt);
Du mangler et sæt {}, vi programmerer i c++, ikke python:
#include <windows.h> #include <iostream> using namespace std;
COLORREF ToFindColor = RGB(255, 0, 0); int main() { const int Width = GetSystemMetrics(SM_CXFULLSCREEN); const int Height = GetSystemMetrics(SM_CYFULLSCREEN); POINT pt; RECT rc;
HDC dc = GetDC(0); int x, y; for(y = 0; y < Height; y++) for(x = 0; x < Width; x++) if(GetPixel(dc, x, y) == ToFindColor) { cout << "Found at: " << x << ", " << y << " \n"; GetCursorPos(&pt); SetCursorPos(x, y); system("pause"); ReleaseDC(0, dc); return 0; } ReleaseDC(0, dc); return 0; }
Årh Tak :) Det virker nu.. Men lige til sidst.. Kan du ikke lige give mig et par liniers kode til hvordan jeg får musen til at venstre klikke selv.. - Og smid lige et svar :)
Okay.. Min kode ser nu såen her ud: #include <windows.h>
#define _WIN32_WINNT 0x0403
#include <iostream> using namespace std;
COLORREF ToFindColor = RGB(255, 0, 0); int main() { const int Width = GetSystemMetrics(SM_CXFULLSCREEN); const int Height = GetSystemMetrics(SM_CYFULLSCREEN); POINT pt; RECT rc;
HDC dc = GetDC(0); int x, y; for(y = 0; y < Height; y++) for(x = 0; x < Width; x++) if(GetPixel(dc, x, y) == ToFindColor) { cout << "Found at: " << x << ", " << y << " \n"; GetCursorPos(&pt); SetCursorPos(x, y); INPUT Input; memset(&Input, 0, sizeof(Input)); Input.type = INPUT_MOUSE; Input.mi.dx = x; Input.mi.dy = y; Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; SendInput(1, &Input, sizeof(INPUT)); Input.mi.dwFlags = MOUSEEVENTF_LEFTUP; SendInput(1, &Input, sizeof(INPUT)); system("pause"); ReleaseDC(0, dc); return 0; } ReleaseDC(0, dc); return 0; } - Men det fungere stadig ik.. Får en Builderror :S
Ahh Ja :) Min fejl.. men hvis du ik samler på Point må jeg sige mange Tak :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.