I
So, ich schreibe wieder, weil ich fast herausgefunden an was es liegt, dass es nicht funtioniert.
Alles was nicht drin ist, wird wo anders ausgeführt. z.B. delete bmp; steht unter dem OnClose event.
DWORD WINAPI ScanFunc( LPVOID lpParam )
{
while(whilethread==true)
{
if(scanthread==true)
{
DeskH = GetDesktopWindow();
dc = GetWindowDC(DeskH);
bmp->PixelFormat=pf24bit;
BitBlt(bmp->Canvas->Handle, 0, 0, bmp->Width, bmp->Height, dc, 0, 0, SRCCOPY);
for(scany=0; scany < bmp->Height; scany++)
{
ypix = reinterpret_cast<TRGBTriple *>(bmp->ScanLine[scany]);
for(scanx=0; scanx < bmp->Width; scanx++)
{
if(ypix[scanx].rgbtBlue == 49 && ypix[scanx].rgbtGreen==247 &&
ypix[scanx].rgbtRed ==255)
{
sk.SendKeys("{BEEP 350 300}");
//MessageBox(0,"Gefunden","test1",MB_OK);
}
}
}
ReleaseDC(DeskH,dc);
}
Sleep(100);
}
return 0;
}
Also, was passiert hier:
Keine Arbeitsspeicherüberlastung.
Dafür aber macht er irgendwie nur einmal screen shot oder so was in der art.
Wenn ich das Bild wo sich die gewünschte Farbe öffne und erst dann die Funtion lauden lasse, dann findet er die farbe
sk.SendKeys("{BEEP 350 300}");
Macht beep Geräusche und so weiß ich, dass es die Farbe findet. Wenn ich das Bild minimiere hört es nicht auf zu beepen. Deshalb gehe ich davon aus, dass irgendwas nicht überschrieben wird.
Hat jemand eie Idee?