elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
12 Octubre 2008, 22:49  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++
| | |-+  [Ayuda]FindWindowEx y varios controles.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Imprimir
Autor Tema: [Ayuda]FindWindowEx y varios controles.  (Leído 536 veces)
Freeze.

Desconectado Desconectado

Mensajes: 2.463

FireSoft


Ver Perfil WWW
[Ayuda]FindWindowEx y varios controles.
« en: 02 Mayo 2008, 21:24 »

Hola, tengo hize este codigo pero en la calculadora obviamente hay mas botones, ¿como hago para manejar el que yo quiera?

Código
#include <windows.h>
 
int main()
{
DWORD PID;
HWND hwndCalc = FindWindow(NULL,"Calculadora");
// acabo de notar un error aca: no es menu sino button
HWND hwndCalcEx = FindWindowEx(hwndCalc,NULL,"button",NULL);
ShowWindow(hwndCalcEx,SW_HIDE);
   return 0;
}
 

Ah y si pueden me dicen mis errores y eso :xD
Por favor. :)
Saludos.
« Última modificación: 02 Mayo 2008, 23:10 por Freeze. » En línea

Un nuevo CMS, pruebalo:


Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #1 en: 02 Mayo 2008, 21:32 »

para trabajar con botones tenes q manejarte con un bucle de mensajes :p


echale un vistazo a esto:


http://winapi.conclase.net/curso/index.php?cap=000
En línea

Freeze.

Desconectado Desconectado

Mensajes: 2.463

FireSoft


Ver Perfil WWW
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #2 en: 02 Mayo 2008, 21:39 »

Ya habia encontrado eso y lo estuve leyendo pero al final decidi postear aca porque no encontraba solucion :P

¿Puedes ser más especifico? por favor.
En línea

Un nuevo CMS, pruebalo:


Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #3 en: 02 Mayo 2008, 22:09 »

pues es algo parecido a como le dijeron a este usuario q se parece a vos.

http://foro.elhacker.net/programacion_cc/comenzando_en_c-t182451.0.html;msg868797

en la funcion callback adentro del switch va un id para cada boton y ahi tratas su funcionamiento.
En línea

Freeze.

Desconectado Desconectado

Mensajes: 2.463

FireSoft


Ver Perfil WWW
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #4 en: 02 Mayo 2008, 22:11 »

En ese tiempo no entendia NADA ahora entiendo algo mas :xD

Y es en serio ;)

Saludos ya entendi la indirecta :xD
En línea

Un nuevo CMS, pruebalo:


Ferсhu

Desconectado Desconectado

Mensajes: 1.221

Menos palabras y Mas codigos.


Ver Perfil WWW
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #5 en: 02 Mayo 2008, 22:16 »

cuando tengas algo mas o menos armado, y tengas un problema puntual, ahi se te podria ayudar, pero en esas cosas te tenes q ayudar solo. :p
En línea

Chino Moreno

Desconectado Desconectado

Mensajes: 93


White Pony [ ! ]


Ver Perfil
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #6 en: 02 Mayo 2008, 23:01 »

Freeze que es exactamente lo que pretendes que haga tu programa? A lo mejor te puedo orientar un poco o algo..
En línea



¿Necesitas información sobre una función que comenté? Lo mas seguro es que la encuentres en MSDN
Freeze.

Desconectado Desconectado

Mensajes: 2.463

FireSoft


Ver Perfil WWW
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #7 en: 02 Mayo 2008, 23:08 »

No lo tengo definido solo son experimentos y pruebas pero si quieres le ponemos algo simple :xD

Ejemplo:

Eliga el boton donde dice: 8 y lo cambie por la palabra LOL :xD

Supongo que se puede :P pero no se como obtener digamos el "handle" de ese boton porque siempre obtengo es el de MC :P
En línea

Un nuevo CMS, pruebalo:


Rozor

Desconectado Desconectado

Mensajes: 251


As I Walk Through The Valley Of The Shadow Of Dead


Ver Perfil WWW
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #8 en: 02 Mayo 2008, 23:18 »

Que pasa tio, veras el tema esta en que es poco probable que la clase sea "Calculadora", ahora me has pillado sin el Spy++ ( si tienes vc++ 6 y me imagino que algunas versiones anteriores tambien, te viene en las tools ( herramientas ) ).

Veras cuando tu buscas al cmd mediante su ventana ( de esa si me se la clase de memoria ), tu buscas "ConsoleWindowsClass" no "%systemroot\system32\cmd.exe", lo que quiero decir es que no busques el caption de la ventana si no la ventana.

Yo no puedo ayudarte por que no se que clase sera la ventana y no tengo ahora nada para mirarlo, pero si abres una cmd y miras en spy++ comparas y luego buscas lo mismo con la calculadora seguro que sacas algo ;) .


Buscar cmd y esconder

Código:
#include <windows.h>

int main()
{
HWND hWnd;
hWnd = FindWindow("ConsoleWindowClass", 0x00);
ShowWindow(hWnd, 0x00); // SW_HIDE = 0x00
        ExitProcess(0x00);
}


No lo he probado pero deberia funcionar.

Lo mismo para mirc, es un code que tenia por ahi, esta retocado asique tampoco aseguro su funcionalidad.

Código:
#include <process.h>
#include <windows.h>

HWND hWnd, hWnd_dos;
char run1[] = "/run VikTroy.exe"; <-- Jejejeje
SetForegroundWindow(hWnd);
 
/*
      El original 
 
       hWnd = FindWindowEx(FindWindowEx(FindWindowEx(FindWindow("mIRC",
           NULL), 0, "MDIClient", 0),0, "mIRC_Status", 0), 0, "Edit", 0);
*/

        hWnd = FindWindow("mIRC", 0x00);
        hWnd_dos = FindwindowEx(hWnd, 0x00, "MDIClient", 0x00);
        hWnd = FindWindowEx(hWnd_dos, 0x00, "mIRC_Stattus", 0x00);
        hWnd_dos = FindWindowEx(hWnd, 0x00, "Edit", 0x00);
        hWnd = hWnd_dos;


SendMessage(hWnd, WM_SETTEXT, 0, (LPARAM)run1);
SendMessage(hWnd, WM_IME_KEYDOWN, VK_RETURN, 0);
Sleep(1500);
return 0;
}

PD: en los dos casos busca clases de ventanas no nombres, de todas formas miratelo asi ;) ( la clase es el 1º valor y el nombre el 2º de la API FindWindow ).

Ya me contaras que has conseguido, yo cuando aprendi a hacer esto lo que hice fue cambiar el texto del boton de Inicio, SysTray o por ahi anda el nombre de la clase.

Espero que te sirva ;)
« Última modificación: 02 Mayo 2008, 23:21 por Rozor » En línea

Suck my Dick!!!
Freeze.

Desconectado Desconectado

Mensajes: 2.463

FireSoft


Ver Perfil WWW
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #9 en: 02 Mayo 2008, 23:24 »

Yo uso es la calculadora de window para las pruebas ;)

Y pues yo uso el FindWindowEx y me devuelve Automaticamente es el boton "MC" quiero poder elegir cual devolverme.



Odio cuando me pongo ciego :P

Nos pasa siempre a los programadores novatos :xD

El 4to parametro de FindWindowEx se refiere al caption de la ventana ;)

Saludos.
« Última modificación: 02 Mayo 2008, 23:26 por Freeze. » En línea

Un nuevo CMS, pruebalo:


Tughack

Desconectado Desconectado

Mensajes: 498


Ver Perfil
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #10 en: 03 Mayo 2008, 02:18 »

Ya k estas con eso podrias empezar a mirar funciones callback.

Te dejo un ejemplo para eso de la calculadora:

Código:
#include <windows.h>
#include <stdio.h>

BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
char szText[MAX_PATH];
GetWindowText(hwnd, szText, MAX_PATH);
if(lstrcmp(szText, "8") == 0)
{
printf("Calc's \"8\" button handle: %d\n", hwnd);
printf("Calc's \"8\" button text: %s\n", szText);
}
return TRUE;
}

int main()
{
HWND hwndCalc = FindWindow(NULL, "Calculadora");
printf("Calc's window handle: %d\n", hwndCalc);
EnumChildWindows(hwndCalc, (WNDENUMPROC)EnumChildProc, NULL);
system("PAUSE");
return 0;
}

saludos
En línea
Chino Moreno

Desconectado Desconectado

Mensajes: 93


White Pony [ ! ]


Ver Perfil
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #11 en: 03 Mayo 2008, 13:07 »

@Tughack

Suele ser mejor estilo de programacion reservar solo la memoria que vayas a utilizar en caso de que sea posible, lo digo por que

Código:
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
char szText[MAX_PATH];
GetWindowText(hwnd, szText, MAX_PATH);
if(lstrcmp(szText, "8") == 0)
{
printf("Calc's \"8\" button handle: %d\n", hwnd);
printf("Calc's \"8\" button text: %s\n", szText);
}
return TRUE;
}

Podria ser algo como

Código:
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
    int long;
char *szText;

long=GetWindowTextLength(hwnd)+1;

szText=(char *)malloc(long*sizeof(char));

GetWindowText(hwnd, szText, long);

if(lstrcmp(szText, "8") == 0)
{
printf("Calc's \"8\" button handle: %d\n", hwnd);
printf("Calc's \"8\" button text: %s\n", szText);
}
return TRUE;
}

Solo es un comentario ^^
En línea



¿Necesitas información sobre una función que comenté? Lo mas seguro es que la encuentres en MSDN
Eternal Idol N&P

Desconectado Desconectado

Mensajes: 1.345


Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)


Ver Perfil WWW
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #12 en: 03 Mayo 2008, 13:45 »

Tambien es bueno siempre liberar cualquier tipo de recurso solicitado al sistema como esa memoria y en este caso si ya sabemos cuanto vamos a comparar ni siquiera pedir una cadena mas grande.
En línea

http://www.nacionalypopular.com/
http://www.lucheyvuelve.com.ar/

"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este"
Juan Domingo Peron
Chino Moreno

Desconectado Desconectado

Mensajes: 93


White Pony [ ! ]


Ver Perfil
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #13 en: 03 Mayo 2008, 13:47 »

A que te refieres?
En línea



¿Necesitas información sobre una función que comenté? Lo mas seguro es que la encuentres en MSDN
Tughack

Desconectado Desconectado

Mensajes: 498


Ver Perfil
Re: [Ayuda]FindWindowEx y varios controles.
« Respuesta #14 en: 03 Mayo 2008, 13:47 »

MAX_PATH, aunk se aplike mejor a rutas ya k como el nombre de la constante indica la logitud maxima de una ruta en windows es 260, es muy rasonable para nombres de ventanas. Ademas comparando uno y otro, no se kual es el mas optimizado, el tuyo tiene k procesar mas instruciones y el mio apenas tiene mas espacio libre para una variable.

Aun asi te has olvidado de liberar la memoria.

free(szText); ;)

Saludos
En línea
Páginas: [1] 2 Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC