2013-12-19 5 views
3

나는 미국 표준 키보드를 가지고 있지만, SendInput 방법을 사용하여 키 입력의 이탈리아어 또는 중국어 유형을 시뮬레이트하고 싶습니다. C++에서 지정된 키보드 키 스트로크를 시뮬레이트하는 방법은 무엇입니까?

이 같은 SendInput을의 metode를 사용

,

KEYBDINPUT kb = { 0 } ; 

ZeroMemory (& kb , sizeof (KEYBDINPUT)) ; 
ZeroMemory (& kInput , sizeof (INPUT)) ; 

kb.wVk = 0 ; 
kb.dwFlags = KEYEVENTF_UNICODE ; 
kb.wScan = vk ; //vk is result of MapVirtualKey key API 
kInput.type = INPUT_KEYBOARD ; 
kInput.ki = kb ; 

UINT res = SendInput (1 , & kInput , sizeof (INPUT)) ; 

참고 : - 변경없이 키보드 설정.

+0

난 당신이 틀린 장소에서보고 있다고 생각합니다. 원시 키보드 입력은이 언어의 많은 것들이 수행되는 장소가 아닙니다. 아마도 IME 및/또는 일부 Acessibility API를 시뮬레이트해야 할 필요가있을 것입니다. –

+0

나는 중국어이므로 중국어 키보드 레이아웃이 en-us와 동일하다고 말해야합니다. 중국어 글립 문자의 입력은 입력 방법을 사용하여 수행됩니다. – jiandingzhe

+0

@jiandingzhe 정교하게 설명해 주시겠습니까? 한자에 SendInput 메서드를 어떻게 사용합니까? – bala

답변

2

KEYEVENTF_UNICODE을 사용하는 경우 kb.wScan은 유니 코드 문자 wchar_t이어야합니다. MapVirtualKey을 사용하지 마십시오.

또한 키 다운 직후에 "키 업"전환을 보내는 것을 잊지 마십시오.

UINT res = SendInput (1 , & kInput , sizeof (INPUT)) ; 
kb.dwFlags |= KEYEVENTF_KEYUP; 
res = SendInput (1 , & kInput , sizeof (INPUT)) ;