elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++]Ayuda con un programa funcion getpixel
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++]Ayuda con un programa funcion getpixel  (Leído 3,984 veces)
Ahustinkrone

Desconectado Desconectado

Mensajes: 6


Ver Perfil
[C++]Ayuda con un programa funcion getpixel
« en: 30 Mayo 2014, 22:00 pm »

Holas, estoy intentando crear un programa que obtenga el valor rgb o bgr de un pixel especifico en la ventana activa que no seria la del programa en si.
osea yo quiero que revise el pixel que esta en X, Y y me diga que color es cada x tiempo.
el problema es que no entiendo como funciona getpixel(hdc,x,y). supongo que x e y son las coordenadas del pixel a revisar pero ¿hdc?.. sino alguien me puede explicar como utilitaria getpixel para lo que necesito ?
Trabajo con Code:Blocks y ya linkie gdi32.
PD: es mi primera post ^^


« Última modificación: 31 Mayo 2014, 07:08 am por Ahustinkrone » En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: [C++]Ayuda con un programa funcion getpixel
« Respuesta #1 en: 31 Mayo 2014, 03:14 am »

Holas, estoy intentando crear un programa que obtenga el valor rgb o bgr de un pixel especifico en la ventana activa que no seria la del programa en si.
osea yo quiero que revise el pixel que esta en X, Y y me diga que color es cada x tiempo.
el problema es que no entiendo como funciona getpixel(hdc,x,y). supongo que x e y son las coordenadas del pixel a revisar pero ¿hdc?.. sino alguien me puede explicar como utilitaria getpixel para lo que necesito ?
Trabajo con Code:Blocks y ya linkie gdi32.
PD: es mi primera post ^^
GetDC ( Hwnd ) http://msdn.microsoft.com/en-us/library/windows/desktop/dd144871(v=vs.85).aspx.
Hay otras maneras también. Y Además mejor cambia de compilador a VC++ ( Visual Studio ).


En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: [C++]Ayuda con un programa funcion getpixel
« Respuesta #2 en: 31 Mayo 2014, 03:47 am »

HDC = Handle to Device Context
No se mucho de win api pero se que para poder dibujar en windows necesitas un Device Context.
El Handle es lo que maneja el Device Context.
Digamos que una ventana es un Device Context cuando creas un hdc
le asignas a una DC para poder ser manejado.

Es como cuando creas una variable y después le asignas el valor que va a guardar.
hdc es la variable y en ella guardamos la ventana DC.

por ejemplo:

HDC hdc = GetDC ( NULL );

HDC es el tipo de dato
hdc   es el nombre que le damos
GetDC ( NULL ); asigna a hdc la una ventana.

En fin hdc es un puntero a un ventana DC.





En línea

Ahustinkrone

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [C++]Ayuda con un programa funcion getpixel
« Respuesta #3 en: 31 Mayo 2014, 06:29 am »

GetDC ( Hwnd ) http://msdn.microsoft.com/en-us/library/windows/desktop/dd144871(v=vs.85).aspx.
Hay otras maneras también. Y Además mejor cambia de compilador a VC++ ( Visual Studio ).
porque me lo recomiendas ? que caracterusticas presenta mejores/distantas al code::blocks?

Volviendo al tema,mire varios ejemplos del uso del HDC y pude entenderlo un poco, gracias a los 2 por sus repuestas, voy a probar con GetDC (NULL);estaba usando GetWindowDC(hwnd); para seleccionar la ventana donde posicione el puntero, pero creo que seria mas estable si utiliza la pantalla entera ¿no?.
ahora otra duda, si getpixel se utilisa en una ventana seleccionada y no en toda la pantalla el origen de las coordenadas X e Y  es la esquina de la ventana o de la pantalla ?

quiero comentar (por si a alguien le interesa)que el programa que estoy haciendo es un autopot para juegos, bastante sencillo y simplemente como hobbie porque no quería bajar uno, quería hacer uno :D funciona asi:
1-Inicia el programa
2-(una vez dentro de la ventana del juego) Alt + click para marcar en la barra de vida/mana/etc el punto en el que quieres que se empiecen a utilizar o dejen de utilizarse las pociones.
3-se guarda el color original de este pixel.
4-analiza el pixel seleccionado si este cambia de color se empiezan a utilizar las pociones con un cierto intervalo(simula presionar una tecla).
5-si el pixel vuelve a su color original deja de utilizar pociones.


eso es todo, bastante sencillo. ya esta casi terminado. gracias espero sus respuestas
En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: [C++]Ayuda con un programa funcion getpixel
« Respuesta #4 en: 31 Mayo 2014, 06:51 am »

Citar
porque me lo recomiendas ? que caracterusticas presenta mejores/distantas al code::blocks?
Es que estas trabajando con winapi, y para eso por supuesto que es mejor, pero tampoco eres obligado a cambiar y por eso es una recomendación.
Aquí hay un código que si me funciono.
Si le haces unas modificaciones y lo pones en un bucle te puede servir para lo que quieres.
http://stackoverflow.com/questions/4839623/getting-pixel-color-in-c
Busca aprender sobre la api de windows si te interesa el tema ;)
Suerte.
En línea

Ahustinkrone

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: [C++]Ayuda con un programa funcion getpixel
« Respuesta #5 en: 31 Mayo 2014, 07:08 am »

Gracias, la pregunta de "porque me lo recomendabas?" no iba de malas, de verdad quería saber en que era mejor el visual.
y..
Código:
#include <windows.h>
#include <stdio.h>
using namespace std;
HDC dcx;
int x;
int y;
int Color;
int capturarcoord = 1;
int full;
int main()
{
    while (capturarcoord == 1){
            if (GetAsyncKeyState(164) && GetAsyncKeyState(18) && GetAsyncKeyState(1)){
                HWND hwnd; // 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(hwnd);
                x = pt.x;
                y = pt.y;
                capturarcoord = 0;
                printf("Coordenas Seteadas!X=%i Y=%i\n\n\n",x,y);
            }
    }
    full = GetPixel(ventana,x,y);
    while (1<2){
        printf("Pixel Check in \(%i,%i\) normal-value=%i\n",x,y,full);
        Color = GetPixel(dcx,x,y);
        if (full != Color){keybd_event(VK_F10,0x79,0 , 0);keybd_event(VK_F10,0x79,KEYEVENTF_KEYUP , 0);printf("Funciona!");}
        printf("%i\(10\) = %x\(16\)\n",Color,Color);
        Sleep(380);
    }
    return 0;
}

Eso es lo hice hasta ahora, faltan algunas modificaciones para hacerlo mas bello y configurable pero el motor funciona correctamente, doy el tema por resuelto. gracias por sus respuestas :D
« Última modificación: 31 Mayo 2014, 07:16 am por Ahustinkrone » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[ayuda] getpixel & setpixel
.NET (C#, VB.NET, ASP)
Alfai 1 3,039 Último mensaje 11 Mayo 2009, 16:56 pm
por BrokenWindow
GetPixel!
Programación Visual Basic
andresxdddd 6 3,326 Último mensaje 18 Enero 2011, 20:33 pm
por BlackZeroX
[C] ayuda, programa compila bien pero no cumple la funcion (solucionado)
Programación C/C++
xiruko 6 3,779 Último mensaje 15 Abril 2012, 23:48 pm
por xiruko
Ayuda con GetPixel (Ingresa para entender)
.NET (C#, VB.NET, ASP)
GonzaFz 1 2,478 Último mensaje 25 Mayo 2012, 17:13 pm
por Maurice_Lupin
Problema que no comprendo con la api GetPixel
Programación Visual Basic
Elemental Code 7 3,501 Último mensaje 7 Septiembre 2012, 00:17 am
por Dessa
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines