Tu comunidad de Seguridad Informatica

Para ver Todo el contenido del foro es necesario estar Registrado!
Antes de comentar o Aportar es Obligado Leer Las: Reglas | Rules
Ya Esta Disponible al publico "LeProject" el Videojuego del Foro Click Aquí Para Ver el Post.
Pitbull Security Labs "Extras" Esta Disponible! [ENTRA]

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

avatar
Administrador
Administrador

Ver perfil de usuario http://www.pitbullsecurity.org
el Dom Nov 14, 2010 1:26 pm
Con unas funciones de la API de windows, podremos obtener el color de el pixel apuntado por el cursor.

La funcion es GetPixel(HDC, pos.x, pos.y);

El code que lo hace todo es:

[Tienes que estar registrado y conectado para ver este vínculo]
Código:
HDC dcx;     
            HWND hwnd2; // el manejador de la ventana a trabajar
            POINT pt;                  // Puntero para las cordenadas
            GetCursorPos(&pt);                // La funcion que dara las cordenadas
            hwnd2 = WindowFromPoint(pt); // la funcion que capta la hwnd
            dcx =GetWindowDC(hwnd2);
            if(lParam==(LPARAM)Edit){
            SetBkColor((HDC)wParam,GetPixel(dcx,pt.x,pt.y));
            SetTextColor((HDC)wParam, RGB(0,0,255));
El code completo:

[Tienes que estar registrado y conectado para ver este vínculo]
Código:
#include

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";
HINSTANCE miinstancia;

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;              /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
  // wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
  wincl.hbrBackground = (HBRUSH)CreateSolidBrush(RGB(0,0,216));

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
          0,                  /* Extended possibilites for variation */
          szClassName,        /* Classname */
          "Get Pixel from Point  bY SEKTOR",      /* Title Text */
          WS_OVERLAPPEDWINDOW, /* default window */
          CW_USEDEFAULT,      /* Windows decides the position */
          CW_USEDEFAULT,      /* where the window ends up on the screen */
          300,                /* The programs width */
          100,                /* and height in pixels */
          HWND_DESKTOP,        /* The window is a child-window to desktop */
          NULL,                /* No menu */
          hThisInstance,      /* Program Instance handler */
          NULL                /* No Window Creation data */
          );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);
   
   
    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
       
       
    switch (message)                  /* handle the messages */
    {
     
      case WM_CREATE: 
            static HWND Edit = CreateWindowEx(0,"edit", "nuevo color", WS_CHILD|WS_VISIBLE|WS_TABSTOP,
            100, 20, 80, 20, hwnd, 0, miinstancia, NULL);
            break;
           
    case WM_CTLCOLOREDIT:

            HDC dcx;     
            HWND hwnd2; // el manejador de la ventana a trabajar
            POINT pt;                  // Puntero para las cordenadas
            GetCursorPos(&pt);                // La funcion que dara las cordenadas
            hwnd2 = WindowFromPoint(pt); // la funcion que capta la ventana
            dcx =GetWindowDC(hwnd2);
            if(lParam==(LPARAM)Edit){
            SetBkColor((HDC)wParam,GetPixel(dcx,pt.x,pt.y));
            SetTextColor((HDC)wParam, RGB(0,0,255));
       
            }
break;
     
               
        case WM_DESTROY:
            PostQuitMessage (0);      /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

En esta imagen, detecta el color amarillo que esta bajo el cursor



Gracias Sektor!
Fuente:AH


___________________
Admin: Pitbull Security Labs , Colaborador: Indetectables , Moderador: Level-23

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.