Es Posible hacer un autoclick pixeles?

Iniciado por Tzdah, 23 Septiembre 2012, 04:25 AM

0 Miembros y 1 Visitante están viendo este tema.

Tzdah

Me refiero a yo poner un color hexadecimal y al activar el autoclick se mueva a la posición de ese color.

Saludos

~.L.~

Hola DEINO, revisa si alguna de estas funciones te sirven:
http://www.ehowenespanol.com/leer-pixeles-cuadros-imagenes-visual-basic-6-como_120126/
http://deepdarkprocess.wordpress.com/2010/09/09/vb6-leer-un-pixel-de-una-imagen/

Con estos mismos, lo que puedes hacer tú es leer los pixeles y el resto queda a cuenta tuya.
Un saludo, ~.L.~
Si me necesitas por algun motivo o ocasión.
Skype: luuq.ruppi
MSN: luqaspeola1@hotmail.com

                                 ~.L.~

BlackZeroX

#2
Cita de: DEINO en 23 Septiembre 2012, 04:25 AM
Me refiero a yo poner un color hexadecimal y al activar el autoclick se mueva a la posición de ese color.

Saludos

Te dire los pasos por que no cuento con vb6...

1.- Debes obtener el descriptor DC (hDC) de la pantalla (se obtiene con una API que se llama mas o menos así: GetDC() ).
2.- Con esto realizado tienes DOS posibilidades para obtener los pixeles:
2.1.-Proceso LENTO (Internamente se convierte en un BITMAP y lo destruye por cada llamada a GetPixel...):
Usar el API GetPixel() (le debes pasar el hDC en su parámetro, que te retorno el API GetDC() +  las coordenadas [X, Y]):
2.2.- Proceso RAPIDO:
Transformar el hDC en un Bitmap y recorrer la sección de datos del color como un array, obviamente teniendo en cuenta el ancho y alto (Equivalentes a el tamaño de la ventana que obtuviste el hDC con GetDC(), si es de la pantalla entonces es equivalente a tu resolución, hay APIS para obtener la resolución...).
Para transformar en un BITMAP debes usar las APIS de la GDI... puedes usar las APIS: CreateCompatibleBitmap()... y obtienes TODOS los bytes de cada color con el API: GetDIBits()... un ejemplo (Esta en C pero no difiere mucho pues solo son llamas a API para obtener un Screenshot de la pantalla):

Lo que esta después de la linea 26 no importa de mucho puesto que en la 26 ya obtienes EL PUNTERO a la sección donde están LOS BYTES en grupos de 3 bytes (cada byte es un color: Red, Green and Blue: RGB, si no mal recuerdo están inversos... BGR... no lo recuerdo bien) este puntero (BitmapData) lo puedes recorrer con CopyMemory() o APIS para el acceso a la memoria...

Código (c, 26) [Seleccionar]


int SaveScreen()
{
  HDC hdc = GetDC(NULL), hdcMem = CreateCompatibleDC (hdc);
  int iWidth = GetDeviceCaps(hdc, HORZRES), iHeight = GetDeviceCaps(hdc, VERTRES), iSaved = SaveDC(hdcMem);
  HBITMAP hBitmap = CreateCompatibleBitmap(hdc, iWidth, iHeight);
  BYTE* BitmapData;
 
  int numBytes = 3 * (iWidth * iHeight);
 
  BitmapData = new BYTE [numBytes];
 
  BITMAPINFOHEADER bmi = {0};
  BITMAPFILEHEADER bmf = {0};
 
  bmi.biSize = sizeof(BITMAPINFOHEADER);
  bmi.biPlanes = 1;
  bmi.biBitCount = 24;
  bmi.biWidth = iWidth;
  bmi.biHeight = iHeight;
 
  SelectObject(hdcMem, hBitmap);
  BitBlt(hdcMem, 0, 0, iWidth, iHeight, hdc, 0, 0, SRCCOPY);
  RestoreDC(hdcMem, iSaved);
 
  GetDIBits(hdc, hBitmap, 0, iHeight, BitmapData, (BITMAPINFO*)&bmi, DIB_RGB_COLORS);
 
  bmf.bfOffBits = sizeof (bmf) + sizeof (bmi);
  bmf.bfSize = bmf.bfOffBits + numBytes;
  bmf.bfType = 0x4D42;
 
  char filename[30];
  sprintf(filename, "%i.bmp", time(NULL)); //saveDirectory is a global variable.
 
  FILE* pFile = fopen(filename, "wb");
  if(pFile == NULL) return 0;
 
  fwrite (&bmf, sizeof (bmf), 1, pFile);
  fwrite (&bmi, sizeof (bmi), 1, pFile);
  fwrite (BitmapData, sizeof (BYTE), numBytes, pFile);
  fclose (pFile);
 
  delete [] BitmapData;
 
  DeleteObject(hBitmap);
  DeleteDC(hdcMem);
  ReleaseDC(NULL, hdc);
 
  return 1;
}



3.- Recorre la fila de los pixeles por cada columna y obtén el pixel, a continuación compara lo con el color que buscas:

Si quieres los colores RGB de un color... tienes alguna de estas dos funciones:

http://foro.elhacker.net/programacion_visual_basic/recopilacion_de_funciones_con_operaciones_binarias-t329680.0.html;msg1623777#msg1623777

Las funciones te retornar los colores RGB y en base a esto puedes hacer comparaciones de tolerancia de colores mas exactos...

Dulces Lunas!¡.
The Dark Shadow is my passion.