Q&A

  • 마우스훅을 이용한 가상키보드구현중에 한글처리문제
HookDll 파일은 다음과 같이 코딩을 했습니다.



function MouseProc(nCode: Integer; wParam: Longint; lParam: Longint) : integer; stdcall;

var

TargetWnd : HWnd;

begin

if (nCode >=0) and (nCode = HC_ACTION) then

begin

if wParam = WM_LBUTTONDown then

begin

TargetWnd := FindWindow(nil, '가상키보드');

SendMessage(TargetWnd,WM_LBUTTONDOWN,wParam,lParam);

end;

end;

result := CallNextHookEx(0, nCode, wParam, lParam);

end;



Procedure InitHook; export;

begin

myhookdata.nType := WH_MOUSE;

myhookdata.hkprc := @MouseProc;

ShowMessage('훅이 초기화 되었음');

myhookdata.hhook := SetWindowsHookEx(

myhookdata.nType,

myhookdata.hkprc,

HInstance, 0);

end;



그리고 이를 가상키보드프로그램에서 폼위에 각각의 버튼을 올려놓고, 각버튼에

다음과 같이 코딩을 했습니다.



procedure TForm1.ButtonAClick(Sender: TObject);



begin

SendMessage(TargetWnd,WM_CHAR,ord('a'),0);

end;

:

:

:



procedure TForm1.WndProc(var Message : TMessage);

var

P : TPoint;

begin

case Message.Msg of

WM_LBUTTONDOWN :

begin

GetCursorPos(P);

TargetWnd := WindowFromPoint(P);

CheckMyWnd; {다른 위도우의핸들을 얻어오는 부분입니다.}

Test1Wnd := TargetWnd;

end;

end;

inherited WndProc(Message);

end;



이렇게 작업을 하니, 일반 영문이나,숫자/특수문자등은 잘 작동을하는데

한글은 도무지 어떻게 해야할지 깜깜하네요.



고수님들 제발 이에대한 답변좀 부탁드리겠습니다.

0  COMMENTS