Autor
|
Tema: Findwindow() en Windows Seven (Leído 4,137 veces)
|
Air_Dragon
Desconectado
Mensajes: 13
|
Tengo una aplicacion que me genera crash, paso a paso vi que el error estaba en HWND hWnd = FindWindow(NULL,"Calculadora"); Solo eso me hace crashear en Windows 7, menos en el Home, el programa lo compile en Windows XP, 2003 y hasta mismo Seven y siegue haciendo lo mismo, me qde sin ideas... A alguien le paso algo parecido?
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
¿Estas seguro de que se produce la excepcion al llamar a FindWindow? Fijate si esto te funciona: #include <windows.h> int CALLBACK WinMain( __in HINSTANCE hInstance, __in HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nCmdShow ) { HWND hWnd = FindWindow(NULL,"Calculadora"); MessageBox(0, "SI", "SI", 0); }
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Air_Dragon
Desconectado
Mensajes: 13
|
No me funciona, no se si lo hice bien, pero te pego mi script, solo fuerza el listado de ventanas, esten ocultas o no, en XP funciona 10 pts, pero en seven en algunas pcs crashea o solo dice que "no se pudo iniciar la aplicacion la configuracion en paralelo no es correcta..... " Googlee ese error por supuesto, me pide que baje los Redistributable package, lo probamos instalando 2005 - 2008, los service packs, etc etc, sigue el mismo error.. y me di cuenta que era el FindWindow cuando solo hice HWND hWnd = FindWindow(NULL,"Calculadora"); if(hWnd ) { printf("Calculadora detectada"); }
#include <windows.h> #include <conio.h> #include <stdio.h>
void EnableDebugPriv() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ) ) return; if ( ! LookupPrivilegeValue( NULL, SE_DEBUG_NAME, &sedebugnameValue ) ){ CloseHandle( hToken ); return; } tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = sedebugnameValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if (!AdjustTokenPrivileges( hToken, FALSE, &tkp, sizeof tkp, NULL, NULL ) ) CloseHandle( hToken ); }
struct ProcInfo { HWND hWnd; CHAR szTitle[255]; CHAR szClass[255]; };
void ForzarListado() { HWND hWnd; ProcInfo mProc[1024]; int nCount = 0; int nPID = 0; int i = 0;
hWnd = FindWindow(NULL,NULL); MessageBox(0,hWnd,"Holas",0);
while(hWnd>0) { if(!GetParent(hWnd)) { mProc[nCount].hWnd = hWnd; GetWindowTextA(hWnd, mProc[nCount].szTitle, 255); GetClassNameA(hWnd, mProc[nCount].szClass, 255); if(_strnicmp(mProc[nCount].szTitle,"Calculadora",sizeof("Calculadora"))==0) { printf("Calculadora encontrada \n"); break; } nCount++; } hWnd = GetWindow(hWnd, GW_HWNDNEXT); } printf("\n"); }
void main() { EnableDebugPriv(); Sleep(100); ForzarListado(); system("pause"); }
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Me parece que un problema no tiene nada que ver con el otro, fijate si podes depurar FindWindow para ver donde falla exactamente ... te recomiendo usar el WinDbg. PD. Esta linea asi esta mal: MessageBox(0,hWnd,"Holas",0);
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Lunfardo
Desconectado
Mensajes: 568
|
yo en windows 7 y con c #, encontraba la informacion que necesitas con una tool de vs llamada spy++ , que tiene un herramienta llamada Windows Search , que te da la informacion necesaria para ser un usar la funcion FindWindows(). espero haberte ayudado aca de dejo un ejemplo ,aunque justo ahora estoy en xp: pd:no es la FindWindows para la calculadora en xp que en 7
|
|
« Última modificación: 28 Octubre 2010, 00:00 am por SmogMX »
|
En línea
|
|
|
|
Air_Dragon
Desconectado
Mensajes: 13
|
Me parece que un problema no tiene nada que ver con el otro, fijate si podes depurar FindWindow para ver donde falla exactamente ... te recomiendo usar el WinDbg. PD. Esta linea asi esta mal: MessageBox(0,hWnd,"Holas",0); Si si ese messagebox lo taba probando, pero no funciona de todos modos, voy a probar cn el dbg yo en windows 7 y con c #, encontraba la informacion que necesitas con una tool de vs llamada spy++ , que tiene un herramienta llamada Windows Search , que te da la informacion necesaria para ser un usar la funcion FindWindows(). espero haberte ayudado aca de dejo un ejemplo ,aunque justo ahora estoy en xp: Si si, es un test, en Windows Seven es Calculadora lo saque cn winspy.. el tema es que no funciona el findwindow, no quer no lo encuentra
|
|
|
En línea
|
|
|
|
Lunfardo
Desconectado
Mensajes: 568
|
en ninguna ventana te funciona o solo en la de la calculadora ?
y pregunta boluda, aunque no menos importate, la calculadora esta abierta ? xD
|
|
|
En línea
|
|
|
|
|
|