GetPixel Problem



  • Hallo Leute,
    folgendes Problem:
    Mein Programm holt sich das Handle auf ein anderes Fenster mit FindWindow();
    und erstellt dann einen Device Context mit GetDC().
    Dannach soll es eigentlich jede Zeile mit GetPixel durchgehen und stoppen wenn ein Pixel mit bestimmter farbe gefunden wurde.

    Das Problem ist, es klappt einfach nicht das Programm kompiliert wunderbar aber es stoppt nicht 😕
    hier mein Code

    int main()
    {
    	HDC hdc;	
            int height,width;
    	RECT rect;
    	COLORREF pix;
    	HWND hwnd=FindWindowA(NULL,"Fenster");
    
    	ShowWindow(hwnd, SW_RESTORE);
    	SetForegroundWindow(hwnd);
    	SetFocus(hwnd);
    
    	GetWindowRect(hwnd, &rect);
    
    	width=rect.right - rect.left;
    	height=rect.bottom - rect.top;
    
            hdc = GetDC(hwnd);
    
    	while(1)
    	{
    
    		for(int y=0;y<height;++y)
    		{
    
    			for(int x=0;x<width;++x)
    			{
    				pix=GetPixel(hdc,x,y); //Neuen Pixel holen
    
                                     //abgleich der RGB werte       
    				if((GetRValue(pix)-DIA_R>=-TOLL) &&(GetRValue(pix)-DIA_R<=TOLL)) // TOLL  = Tolleranz = 30     |  ist ein #define eig.
    				{		
    					if((GetGValue(pix)-DIA_G>=-TOLL) &&(GetGValue(pix)-DIA_G<=TOLL))
    					{
    						if((GetBValue(pix)-DIA_B>=-TOLL) &&(GetBValue(pix)-DIA_B<=TOLL))
    						{
                                                            //hier Stopp
                                                           cout<<"Pixel gefunden"<<endl;
    
                                                           getchar();
    
    						}
    					}
    				}
    			}
    		}
    
    	ReleaseDC(hwnd,hdc);
    
    		break; 
    	}
    
    	return 0;
    }
    

    Außerdem habe ich überlegt das Problem gar nicht erst mit getPixel zu lößen da die Funktion irgendwie "zu langsam" ist....was gäbe es da für Möglichkeiten?
    Habe mich noch nciht so in die GDI eingewurstelt.
    Hab allerdings schon auf diversen Foren con CreateCompatibleDC , createBitmap usw gehört..
    Wäre es möglich das mir das jemand erklärt, ich bekomm das nämlich nicht so recht hin mit den beiden 😣
    --> Ich meine das hier
    http://www.c-plusplus.net/forum/304452
    kann mir da jemand den code evtl. etwas erklären was genau da passiert ?
    will ja nicht einfach das Zeug reinkopieren ohne das ich weiß was genau passiert 😣



  • so also ich habe jetzt herausgefunden das es daran liegt das ich immer den den RGB-Wert 255/255/255 zurückbekomme. Woran das liegt weiß ich allerdings nicht 😕



  • Wird das Fenster überhaupt gefunden, hat hwnd also einen sinnvollen Wert?


  • Mod

    Wenn GetDC mit NULL gefüttert wird, dann wird der Screen DC zurückgegeben.
    Der sollte auch nicht überall weiß sein.



  • dot schrieb:

    Wird das Fenster überhaupt gefunden, hat hwnd also einen sinnvollen Wert?

    ja das Fenster wird gefunden

    Wenn GetDC mit NULL gefüttert wird, dann wird der Screen DC zurückgegeben.
    Der sollte auch nicht überall weiß sein.

    Ja das hab ich auch schon Probiert und das klappt auch und das Programm hält dann auch an.

    Kann mir jemand evtl. die anderen Methoden etwas erklären?


Anmelden zum Antworten