Problemas con TTimer en captura
Hola, cómo están, yo acá molestando otra vez. :)
Mi consulta es la siguiente: Tengo un mini programita que va capturando la pantalla, en ese Bitmap tomo puntos con colores y puntos de coordenadas de ratón X e Y. Hasta ahí todo bien, lo sé hacer y me sale excelente. Mi problema es que todo eso lo tengo en un TTimer en 200 milisegundos y que no me deja cerrar el programa. Por más que intento con lo que intento no puedo. El programa se queda "tildado" y no hay manera de que cierre. El objetivo del programa es ir haciendo click en ciertos parámetros true false en las coordenadas indicadas. Les paso lo que tengo dentro del timer a ver si pueden ayudarme. Gracias!! procedure TFrmDiamondBot.JvTimer1Timer(Sender: TObject); var i, j, h: IntegeR; Pts: Array [0 .. 90] of TPoint; Cl: Array [0 .. 90] of TColor; BitMap: TBitmap; Begin while ESCPRESS = False do begin //SetForeGroundWindow(Application.Handle); BitMap := TBitmap.Create; CapturarPantalla(0, 0, Screen.width, Screen.height, BitMap); h := 0; for i := 0 to 8 do // Cargamos los valores de los puntos x e y del mouse a clickar y los colores for j := 0 to 9 do begin Pts[h].X := punto.X + 79 + (j * 40) + 10; Pts[h].Y := punto.Y + 130 + (i * 40) + 10; Cl[h] := GetPixel(BitMap.Canvas.Handle, Pts[h].X, Pts[h].Y); Inc(h); end; for j := 0 to FrmDiamondBot.ControlCount - 1 do for i := 1 to 90 do Begin (FrmDiamondBot.Findcomponent('Shape' + IntToStr(i)) as TShape) // Pintamos los Shapes con los colores .Brush.Color := Cl[i - 1]; end; for i := 0 to 89 do if (not SimilarColors(Cl[i], rgb($33, $08, $04), 100)) { Marrón } AND (SimilarColors(Cl[i],rgb($DB, $F2, $FF),50)) then begin ClickRaton(Pts[i].X, Pts[i].Y); Delay(1000); end; for i := 0 to 89 do begin if ((not SimilarColors(Cl[i], rgb($33, $08, $04), 100)) { Marrón } AND (not SimilarColors(Cl[i], rgb($FF, $F3, $F0), 100)) AND (Cl[i] <> rgb($62, $62, $62))) AND (SimilarColors(Cl[i], rgb($B2, $7D, $FE), 0)) { Violeta } OR (SimilarColors(Cl[i], rgb($14, $72, $FD), 0)) { Azul } OR (SimilarColors(Cl[i], rgb($41, $B6, $16), 0)) { Verde } OR (SimilarColors(Cl[i], rgb($EA, $09, $23), 0)) { Rojo } OR (SimilarColors(Cl[i], rgb($BD, $52, $10), 0)) { Amarillo } then ClickRaton(Pts[i].X, Pts[i].Y); if ESCPRESS = True then Break; end; for i := 0 to 7 do begin if (not SimilarColors(Cl[i], rgb($33, $08, $04), 60)) AND (not SimilarColors(Cl[i], rgb($FF, $F3, $F0), 100)) AND (not SimilarColors(Cl[i], rgb($62,$62,$62),60)) then Begin if ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 2], 30))) OR // XXX ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 20], 30))) OR // X // X // X ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // X // XX ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // XX then // X ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 10], 30))) // XX // X then begin // SetCursorPos(Coordenadas.x,Coordenadas.y); ClickRaton(Pts[i].X, Pts[i].Y); if ESCPRESS = True then Break; //Form1.SetFocus; Delay(850); end; end; end; for i := 10 to 17 do begin if (not SimilarColors(Cl[i], rgb($33, $08, $04), 60)) AND (not SimilarColors(Cl[i], rgb($FF, $F3, $F0), 100)) AND (not SimilarColors(Cl[i], rgb($62,$62,$62),60)) then Begin if ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 2], 30))) OR // XXX ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 20], 30))) OR // X // X // X ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // X // XX ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // XX then // X ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 10], 30))) // XX // X then begin // SetCursorPos(Coordenadas.x,Coordenadas.y); ClickRaton(Pts[i].X, Pts[i].Y); if ESCPRESS = True then Break; //Form1.SetFocus; Delay(850); end; end; end; for i := 20 to 27 do begin if (not SimilarColors(Cl[i], rgb($33, $08, $04), 60)) AND (not SimilarColors(Cl[i], rgb($FF, $F3, $F0), 100)) AND (not SimilarColors(Cl[i], rgb($62,$62,$62),60)) then Begin if ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 2], 30))) OR // XXX ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 20], 30))) OR // X // X // X ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // X // XX ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // XX then // X ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 10], 30))) // XX // X then begin // SetCursorPos(Coordenadas.x,Coordenadas.y); ClickRaton(Pts[i].X, Pts[i].Y); if ESCPRESS = True then Break; //Form1.SetFocus; Delay(850); end; end; end; for i := 30 to 37 do begin if (not SimilarColors(Cl[i], rgb($33, $08, $04), 60)) AND (not SimilarColors(Cl[i], rgb($FF, $F3, $F0), 100)) AND (not SimilarColors(Cl[i], rgb($62,$62,$62),60)) then Begin if ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 2], 30))) OR // XXX ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 20], 30))) OR // X // X // X ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // X // XX ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // XX then // X ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 10], 30))) // XX // X then begin // SetCursorPos(Coordenadas.x,Coordenadas.y); ClickRaton(Pts[i].X, Pts[i].Y); if ESCPRESS = True then Break; //Form1.SetFocus; Delay(850); end; end; end; for i := 40 to 47 do begin if (not SimilarColors(Cl[i], rgb($33, $08, $04), 60)) AND (not SimilarColors(Cl[i], rgb($FF, $F3, $F0), 100)) AND (not SimilarColors(Cl[i], rgb($62,$62,$62),60)) then Begin if ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 2], 30))) OR // XXX ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 20], 30))) OR // X // X // X ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // X // XX ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // XX then // X ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 10], 30))) // XX // X then begin // SetCursorPos(Coordenadas.x,Coordenadas.y); ClickRaton(Pts[i].X, Pts[i].Y); if ESCPRESS = True then Break; //Form1.SetFocus; Delay(850); end; end; end; for i := 50 to 57 do begin if (not SimilarColors(Cl[i], rgb($33, $08, $04), 60)) AND (not SimilarColors(Cl[i], rgb($FF, $F3, $F0), 100)) AND (not SimilarColors(Cl[i], rgb($62,$62,$62),60)) then Begin if ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 2], 30))) OR // XXX ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 20], 30))) OR // X // X // X ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // X // XX ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // XX then // X ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 10], 30))) // XX // X then begin // SetCursorPos(Coordenadas.x,Coordenadas.y); ClickRaton(Pts[i].X, Pts[i].Y); if ESCPRESS = True then Break; //Form1.SetFocus; Delay(850); end; end; end; for i := 60 to 67 do begin if (not SimilarColors(Cl[i], rgb($33, $08, $04), 60)) AND (not SimilarColors(Cl[i], rgb($FF, $F3, $F0), 100)) AND (not SimilarColors(Cl[i], rgb($62,$62,$62),60)) then Begin if ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 2], 30))) OR // XXX ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 20], 30))) OR // X // X // X ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // X // XX ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // XX then // X ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 10], 30))) // XX // X then begin // SetCursorPos(Coordenadas.x,Coordenadas.y); ClickRaton(Pts[i].X, Pts[i].Y); if ESCPRESS = True then Break; //Form1.SetFocus; Delay(850); end; end; end; for i := 70 to 77 do begin if (not SimilarColors(Cl[i], rgb($33, $08, $04), 60)) AND (not SimilarColors(Cl[i], rgb($FF, $F3, $F0), 100)) AND (not SimilarColors(Cl[i], rgb($62,$62,$62),60)) then Begin if ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 2], 30))) OR // XXX ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 20], 30))) OR // X // X // X ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // X // XX ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // XX then // X ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 10], 30))) // XX // X then begin // SetCursorPos(Coordenadas.x,Coordenadas.y); ClickRaton(Pts[i].X, Pts[i].Y); if ESCPRESS = True then Break; // Form1.SetFocus; Delay(850); end; end; end; for i := 80 to 87 do begin if (not SimilarColors(Cl[i], rgb($33, $08, $04), 60)) AND (not SimilarColors(Cl[i], rgb($FF, $F3, $F0), 100)) AND (not SimilarColors(Cl[i], rgb($62,$62,$62),60)) then Begin if ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 2], 30))) OR // XXX ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 20], 30))) OR // X // X // X ((SimilarColors(Cl[i], Cl[i + 10], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // X // XX ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 11], 30))) OR // XX then // X ((SimilarColors(Cl[i], Cl[i + 1], 30)) AND (SimilarColors(Cl[i], Cl[i + 10], 30))) // XX // X then begin // SetCursorPos(Coordenadas.x,Coordenadas.y); ClickRaton(Pts[i].X, Pts[i].Y); if ESCPRESS = True then Break; // Form1.SetFocus; Delay(850); end; end; end; // BitMap.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Temp\salvado.bmp'); BitMap.Free; end; |
Hola MaxiDucoli.
Por favor cuando incluyas código en tus mensaje utiliza TAG's. Te pongo una imágen que explica el uso: Saludos y gracias por tu colaboración. :) |
La franja horaria es GMT +2. Ahora son las 04:13:27. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi