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.749
ecfisa Tiene un aura espectacularecfisa 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 09:47:12.


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