|
이진수 님이 쓰신 글 :
: 안녕하세여?
: 키보드 후킹을 하고 있는데 .. 잘안되네여
: 제가 하고 싶은건 특정 에디터를 띄워놓고 키 후킹을 한뒤
: 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;
:
: }
|