Problemas con SendMessage

Iniciado por pepeBocachancla, 16 Julio 2010, 00:03 AM

0 Miembros y 1 Visitante están viendo este tema.

pepeBocachancla

Estoy teniendo problemas con la función SendMessage. Os cuento
Estos días estaba haciendo unas pruebas de simulacion depulsaciones mediante una dll inyectada. Estos días, para hacer la prueba utilizé simplemente Notepad en un Windows XP sp2. El caso es que anteayer tube que formatear el ordenador y me cambie a windows 7. La misma prueba me funcionó correctamente con el Notepad.
El problema me vino cuando decidí probar con el GuildWars. El caso es que envía el mensaje correctamente (retorna bien y GetLastError == 0) pero parece que no llegan pasar por TranslateMessage (esto lo comprobé depurando).
Al principio, pensé que podía ser la UIPI, pero luego me di cuenta de que no podía ser porque como la funcionalidad está inyectada en el propio proceso, no debería dar problemas. Me equivoco en este razonamiento?

Alguien tiene alguna pista?

Os dejo la función que utilizo para enviar los mensajes, no creo que esté mal porque con otros programas funciona a la perfeción, pero nunca se sabe:
void send_char(char c) {
unsigned vkcode, scancode, keydata;

vkcode = LOBYTE(VkKeyScan(c));
scancode = MapVirtualKey(vkcode,0);

keydata = scancode << 16;
keydata += 1;
SendMessage(h_main_window, WM_CHAR, (WPARAM) c, (LPARAM) keydata);
}

h_main_window contiene el valor correcto.
Y creó Dios el Bit y el Byte y vio Dios que era bueno.
Y bendiciéndolos dijo: "creced y multiplicaos".
Genesis 1:21,22

bizco

creo que es porque usa directinput, por eso puede que se ignore tu pulsacion.

Eternal Idol

¿Seguro que h_main_window es valido?
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

pepeBocachancla

sip, capturo el valor del handle con un hook en TranslateMessage. Además lo he comprobado con el InmunityDBG y siempre funciona

BOOL WINAPI fake_TranslateMessage(const MSG *lpMsg) {
if (lpMsg->message == WM_CHAR) {
h_main_window = lpMsg->hwnd;
}
return orig_TranslateMessage(lpMsg);
}
Y creó Dios el Bit y el Byte y vio Dios que era bueno.
Y bendiciéndolos dijo: "creced y multiplicaos".
Genesis 1:21,22