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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C/C++] WinAPI -> Problema con SetWinEventHook
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C/C++] WinAPI -> Problema con SetWinEventHook  (Leído 1,527 veces)
someRandomCode

Desconectado Desconectado

Mensajes: 250



Ver Perfil
[C/C++] WinAPI -> Problema con SetWinEventHook
« en: 7 Noviembre 2014, 15:53 pm »

Hola, muchachos.. Otra vez yo molestando..
Tengo un problema con este hook (lo hago asi por no hacer un polling constante con ::GetForegroundWindow() )
El tema es que por mas que detecta cuando hago el cambio de ventana, no puedo obtener el titulo de la misma..
Posteo a continuacion el codigo de como puse la funcion:
Código:
HWINEVENTHOOK ventanas = FuncionSetWinEventHook(EVENT_SYSTEM_FOREGROUND,EVENT_SYSTEM_FOREGROUND,
NULL,FuncionHookVentanas,0,0,WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS);

Y aca el codigo de la funcion en la DLL:
Código:
extern "C" __declspec(dllexport) void RegistrarCambiosDeVentana
(HWINEVENTHOOK hWinEventHook, DWORD dwEvento, HWND ventana, LONG idObjeto, LONG idDescendiente, DWORD dwEventThread, DWORD dwMsEventTime)
{
if (idObjeto != OBJID_WINDOW || idDescendiente != 0) {
return;
}
//if (ventana == NULL) return;
ventana = GetForegroundWindow();
int error = GetLastError();
if (error == 0) {
char strError[15] = { 0 } ;
_itoa_s(error,strError,10);
MessageBoxA(NULL,strError,"DLL",MB_OK);
}
char * strventana = (char*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,GetWindowTextLengthA(ventana)*sizeof(char)+1);
GetWindowTextA(ventana,strventana,strlen(strventana)+1);
MessageBoxA(NULL,strventana,"DLL",MB_OK);
HeapFree(GetProcessHeap(),HEAP_ZERO_MEMORY,strventana);
}

He probado todo, poniendo todas las combinaciones de INCONTEXT y OUTOFCONTEXT, junto con pasarle o no pasarle el handle de la DLL..
Algo mas debo estar haciendo mal porque en si, no entiendo la vuelta de por que no me obtiene el titulo de la ventana que pasa al foreground..

Saludos!

PD: El codigo de error que me retorna es 0 (o sea, operacion completada exitosamente, que ironico no? y el parametro que viene desde el sistema tampoco me sirve de nada para sacar el titulo de la ventana, esa es otra cosa que probé..)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Equivalencia de función WINAPI unsigned int WINAPI myRun en Windows con Ubuntu
Programación C/C++
bertamax 2 3,109 Último mensaje 7 Agosto 2010, 16:27 pm
por bertamax
Problema con WINAPI
Programación C/C++
..:ALT3RD:.. 7 3,762 Último mensaje 26 Agosto 2011, 21:35 pm
por Queta
Problema leer/escribir puerto serie (C++ WINAPI)
Programación C/C++
SARGE553413 9 6,050 Último mensaje 20 Agosto 2014, 11:36 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines