Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#251
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!¡.
#252
.
No esta mal, la idea puede surtir un efecto positivo.

Dulces Lunas!¡.
#253
Se supone que no se debe de hacer esto (retornar el punto a una variable automática que ya se murió, quien sabe a que apunte despues de su destrucción)...

Código (cpp, 5) [Seleccionar]


char* GetMainExecutablePath() {
TCHAR szEXEPath[2048];
GetModuleFileName ( NULL, szEXEPath, 2048 );
return (char*)szEXEPath;
}



Sin embargo algo así si se podría... evitamos que se destruya al terminar la función...
* OJO TCHAR puede tomar un formato UNICODE o ANSI según los define... así que mejor retornamos un puntero a TCHAR

Código (cpp, 3) [Seleccionar]


const TCHAR *GetMainExecutablePath() {
static TCHAR szEXEPath[2048] = {};
GetModuleFileName ( NULL, szEXEPath, 2048 );
return szEXEPath;
}



pero como es C++, podemos construir una clase string directamente en el retorno de la función.

Código (cpp) [Seleccionar]


#include <string>

string GetMainExecutablePath() {
TCHAR szEXEPath[2048] = {};
GetModuleFileName ( NULL, szEXEPath, 2048 );
return (string)szEXEPath;
}



Los caracteres raros aparecen por que se necesita un final de cadena:


* Si TCHAR toma un formato ANSI solo agrega 1 caracter '\0' (NULL) al finald e la cadena.
* Si TCHAR toma un formato UNICODE solo agrega 2 caracteres '\0' (NULL) al final de la cadena.


En el C y creo que también en C11 de c++ hay funciones especiales para imprimir las cadenas UNICODE.
Si no mal recuerdo en C es wprintf();
https://developer.blackberry.com/native/reference/com.qnx.doc.dinkum/topic/c99/wchar.html

Revisa las bibliotecas:
https://developer.blackberry.com/native/reference/com.qnx.doc.dinkum/topic/bookset.html

Dulces Lunas!¡.
#254
Que rara firma para esta persona que se complica la vida...

Si alguien lo hizo tu también puedes...

Dulces Lunas!¡.
#255
Cita de: -- KiLiaN -- en 11 Septiembre 2012, 12:05 PM
Ya te han explicado el funcionamiento del source que has puesto, si quieres crear el programa aprende a programar y punto, deja de ir pidiendo las cosas y hazlas tu.

Programar es una cosa, saber como hacerlo es otra...

Cita de: NienSueños en  8 Septiembre 2012, 15:11 PM

Si, lo busque en google u.ú


No se nota... hay demasiados códigos en vb6 que hacen esto.

[Src] MultiClic In OneClic

Dulces Lunas!¡.
#256
Programación C/C++ / Re: eliminar vocales
6 Septiembre 2012, 19:38 PM
Cita de: DickGumshoe en  6 Septiembre 2012, 17:44 PM
Avesudra, una pequeña anotación, AlonsoQ está estudiando C, y si no recuerdo mal no se pueden declarar las variables justo cuando la vas a usar, debe ser al principio de la función (en C++ sí que se puede).

Un saludo.

En C99 si se puede hacer eso...

Dulces Lunas!¡.
#257
Revísate algunos códigos en vb6 alguien ya hizo algo similar a esto (en vb6) no recuerdo el nombre del hilo...

Dulces Lunas!¡.
#258
Foro Libre / Re: ¿Por qué soy ateo?
5 Septiembre 2012, 19:59 PM
mmm creer en dios es muy distinto a creer en la existencia de un dios.

Dulces Lunas!¡.
#259
Lo que te deje es el Standart del SMTP te guste o no así vas a estar encontrando información VERÍDICA y puede ser procesada esa información de diversas maneras, los diversos servidores SMTP, sus programadores tuvieron que ver este tipo de documentos que no están orientados a ningún lenguaje mas que para que quien lo lea lo comprenda y lo aplique tal cual pasa con la MATEMÁTICA.

Habitualmente estos documentos te dan un ejemplo(s) pero no orientados a la programación si no a tu compresión; Las librerías a incluir y las funciones de DEBES CREAR por ti mismo o copiar algunas ya realizadas es otra cosa muy ajena a un formato, en este caso el formato del protocolo del SMTP...

Sera mejor que practiques con Sockets antes de meterte con algo así o no sabrás ni que estas haciendo.

Aquí están unos escenarios (ejemplos) donde la S: significa lo que arroja el servidor y C: lo que arroja el cliente...

http://tools.ietf.org/html/rfc2821#appendix-D.1

Dulces Lunas!¡.

EI: juntando mensajes.

Busca aquí el formato documento que necesites...

http://tools.ietf.org/rfc/index

Este es del año (2012).
RFC6710 Simple Mail Transfer Protocol Extension for Message Transfer
Priorities. A. Melnikov, K. Carlberg. August 2012. (Format: TXT=59966 bytes) (Status: PROPOSED STANDARD)

Dulces Lunas!¡.
#260
Aquí te lo dejo de nuevo

http://tools.ietf.org/html/rfc2821

Dulces Lunas!¡.