|
안녕하세여?
키보드 후킹을 하고 있는데 .. 잘안되네여
제가 하고 싶은건 특정 에디터를 띄워놓고 키 후킹을 한뒤
A라고 키를 치면 B라고 에디터에 입력이 되는 것을 하고 싶습니다.
일단 키보드 후킹은 했는데..
입력이 안되네여..
도움 부탁 합니다.
아래는 후킹 소스 입니다.
-----------------------------------------------------------------------------------------------
LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam,LPARAM lParam){
char msg[0xff];
memset(msg,0,sizeof(msg));
dc=GetDC(0);
/* switch(code){
case HC_ACTION :
KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
if ( pkbhs->vkCode == VK_LWIN || pkbhs->vkCode == VK_RWIN ) return 1;
if ( wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN )
{
g_PressedKey = pkbhs->vkCode;
}
break;
}
*/
// Retrieve O/S Version information
/* OSVERSIONINFO osvi;
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx( &osvi );
HWND hWndServer = ::FindWindow(NULL, "AcroEdit");
UINT UWM_KEYINPUT = ::RegisterWindowMessage(UWM_KEYINPUT_MSG);
if ( osvi.dwPlatformId == VER_PLATFORM_WIN32_NT ) // WinNT or Windows 2000
{
TextOut(dc,1,1,"hi",2);
} */
if (code == HC_ACTION){
KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
HWND hWndServer = ::FindWindow(NULL, "AcroEdit");
//MSG *msMessage=(MSG *)lParam;
//if ( pkbhs->vkCode == VK_LWIN || pkbhs->vkCode == VK_RWIN ) return 1;
if ( wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN )
{
//if (msMessage->wParam==122){
g_PressedKey = pkbhs->vkCode;
if (g_PressedKey==65){
// g_PressedKey=65;
sprintf(msg,"%d,%d",hWndServer,pkbhs->vkCode);
TextOut(dc,1,50,msg,strlen(msg));
SendMessage(hWndServer,UWM_KEYINPUT,(WPARAM)g_PressedKey, 0);
//PostMessage(hWndServer, UWM_KEYINPUT, (WPARAM)g_PressedKey, 0);
//PostMessage(hWndServer,WM_KEYDOWN, (WPARAM)VK_SPACE, 0);
}
else return CallNextHookEx(HookHandle,code,wParam,lParam);
//SendMessage(msMessage->hwnd,WM_KEYDOWN, 0, 0);
//SendMessage(msMessage->hwnd,WM_CHAR, '1', 0);
//SendMessage(msMessage->hwnd,WM_KEYUP, 0, 0);
//return CallNextHookEx(HookHandle,code,wParam,lParam);
// PostMessage(hWndServer, WM_KEYDOWN, (WPARAM)g_PressedKey, 0);
//::PostMessage(hWndServer, UWM_KEYINPUT, (WPARAM)g_PressedKey, 0);
// SendMessage(hWndServer,WM_KEYDOWN, 0, 0);
// SendMessage(hWndServer,WM_CHAR, '1', 0);
//SendMessage(hWndServer,WM_KEYUP, 0, 0);
// return SendMessage(hWndServer,WM_CHAR, '1', 0);
}
}
//return CallNextHookEx(HookHandle,code,wParam,lParam);
return 1;
}
|