Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 05-05-2012
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 56
MaxiDucoli Va por buen camino
Question 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;
Responder Con Cita
  #2  
Antiguo 05-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 7.484
ecfisa Tiene un aura espectacularecfisa Tiene un aura espectacular
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con la creación de TTimer es tiempo de ejecución vejerf OOP 3 14-04-2008 16:26:14
Problemas con TTimer RoyTan Varios 4 24-01-2008 02:10:12
Problemas con TTimer SoulSoldier Varios 1 28-04-2006 23:51:25
Problemas con Ttimer ¡¡¡ elbilla Varios 2 21-09-2004 10:12:41
Manejo de un Ttimer miguel_fr OOP 3 21-06-2004 20:25:26


La franja horaria es GMT +2. Ahora son las 23:29:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi