C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[49852] Re:Re:Re:화상키보드에 관한 질문을 올리고자 합니다 :) - 후킹 & 기존에하던것 & VkKeyScan에 대해
나그네 [] 2438 읽음    2007-07-10 14:32
화상(가상)키보드는 후킹을 반드시 해야 합니다.
후킹모듈은 반드시 DLL에 넣놔야 해요. 그렇지 않으면 전역 후킹이 제대로 안됨.

또한 중요한것은 한글IME 조합에 대해서는 키보드 후킹에서 처리해줘야 하며,,
마우스를 클릭하여도 포커스를 받지 않으려면,

LBUTTONDOWN시
현재 활성화되어있는 윈도우 핸들을 저장하고,
GetForegroundWindow, GetFocus

LBUTTONUP시 그 핸들로
SetForegroundWindow
SetFocus
SetActivateWindow 함수를 써야 합니다.

한글 IME조합에 대해서는 다소 복잡할 수 있으나
윈도우는 기본적으로 마우스를 클릭하여도, 키보드 이벤트가 일어납니다.
마우스클릭시 키보드에서 입력받아 그냥 return TRUE 해 주시면
됩니다.
이를 하지 않으면 한글입력시,
"한"을 칠 경우,, "ㅎㅏㄴ"과 같이 메모장등에 잘못 써지는것을 볼 수 있습니다.

추가,
keybd_event(VkKeyScan('q'), 0, 0, 0);
keybd_event(VkKeyScan('q'), 0, KEYEVENTF_KEYUP, 0);
와 같이 해도 되지만, 가끔 아래아 한글에서 안먹히는 경우가 있습니다.
101키를 다 해보시면 압니다.
MapVirtualKey를 사용하여 2번째 인자를 넣어주세요..
3번째 인자는 KEYEVENTF_EXTENDEDKEY | 0와
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP
를 넣어주시구요~

- 나그네 -

+ -

관련 글 리스트
49720 화상키보드에 관한 질문을 올리고자 합니다 :) 온새미 1710 2007/06/27
49722     Re:화상키보드에 관한 질문을 올리고자 합니다 :) 장성호 3014 2007/06/27
49730         Re:Re:화상키보드에 관한 질문을 올리고자 합니다 :) - 후킹 & 기존에하던것 & VkKeyScan에 대해 온새미 2878 2007/06/28
49852             Re:Re:Re:화상키보드에 관한 질문을 올리고자 합니다 :) - 후킹 & 기존에하던것 & VkKeyScan에 대해 나그네 2438 2007/07/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.