Páginas: [1] 2
|
 |
|
Autor
|
Tema: [Ayuda]FindWindowEx y varios controles. (Leído 536 veces)
|
Freeze.
Desconectado
Mensajes: 2.463
FireSoft
|
Hola, tengo hize este codigo pero en la calculadora obviamente hay mas botones, ¿como hago para manejar el que yo quiera? #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  Por favor.  Saludos.
|
|
|
|
« Última modificación: 02 Mayo 2008, 23:10 por Freeze. »
|
En línea
|
Un nuevo CMS, pruebalo:

|
|
|
|
|
Freeze.
Desconectado
Mensajes: 2.463
FireSoft
|
Ya habia encontrado eso y lo estuve leyendo pero al final decidi postear aca porque no encontraba solucion  ¿Puedes ser más especifico? por favor.
|
|
|
|
|
En línea
|
Un nuevo CMS, pruebalo:

|
|
|
|
|
|
|
Ferсhu
Desconectado
Mensajes: 1.221
Menos palabras y Mas codigos.
|
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
Mensajes: 93
White Pony [ ! ]
|
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
Mensajes: 2.463
FireSoft
|
No lo tengo definido solo son experimentos y pruebas pero si quieres le ponemos algo simple  Ejemplo: Eliga el boton donde dice: 8 y lo cambie por la palabra LOL  Supongo que se puede  pero no se como obtener digamos el "handle" de ese boton porque siempre obtengo es el de MC 
|
|
|
|
|
En línea
|
Un nuevo CMS, pruebalo:

|
|
|
Rozor
Desconectado
Mensajes: 251
As I Walk Through The Valley Of The Shadow Of Dead
|
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 #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. #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
Mensajes: 2.463
FireSoft
|
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  Nos pasa siempre a los programadores novatos  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
Mensajes: 498
|
Ya k estas con eso podrias empezar a mirar funciones callback. Te dejo un ejemplo para eso de la calculadora: #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
Mensajes: 93
White Pony [ ! ]
|
@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 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 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
Mensajes: 1.345
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
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
|
|
|
|
Chino Moreno
Desconectado
Mensajes: 93
White Pony [ ! ]
|
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
Mensajes: 498
|
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
|
|
|
|