2014-03-04 2 views
0

앱에 가상 버튼 누르기를 보내려고합니다. SendKeys.Send("{6}");을 사용해 보았지만 앱이 작동하지 않기 때문에 문자열이나 이와 유사한 것으로 수신합니다. 키를 보내려는 앱은 VisualBoy Advance입니다. 내 코드를 사용하면 GUI를 사용하여 원격으로 재생할 수 있으므로 GUI에서 왼쪽 키를 누르면 VBA가 키 입력을 받아야합니다.앱에 키 입력 보내기

코드의 일부 :

case "derecha": 
    SendKeys.SendWait("{4}"); 
    break; 

답변

0

{} 문자는 이스케이프 문자입니다. 6가 이스케이프 값이라고 생각하지 않습니다. 알려진 이탈에 대해서는 http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(v=vs.110).aspx을보십시오. 예를 들어 SendKeys.SendWait("{Right}");은 오른쪽 화살표 키를 보냅니다.

그러나

,

많은 게임 및 에뮬레이터 키보드 상태를 읽어 낮은 수준의 키보드 후크를 사용하는 것입니다. 키보드 독서에 Windows 이벤트 모델을 사용하는 게임을 찾는 것은 매우 드뭅니다. SendKeys은 Windows 메시징 시스템으로 만 보냅니다. 낮은 수준의 이벤트 전송 방법이 필요할 수 있습니다. 대상 응용 프로그램은의 DirectInput을 사용하는 경우

, 당신은 user32.dll에서 SendInput 기능을 사용할 수 있습니다

있다 라이브러리,하지만 난 그것을 직접 사용한 적이 :

+0

Yup! 나는 현재 내 코드가 변경되었습니다 : case "derecha": keybd_event (0x33, 0, 0x0001, 0); keybd_event (0x33, 0, 0x0002, 0); 휴식; 하지만 여전히 버튼을 누르는 것 사이에 약간의 시간이 걸릴 수 있습니까? –

+0

네, 거기에'Thread.Sleep (34)'을 넣을 것입니다 - 이것은 약 2 프레임 정도의 키 - 다운이어야합니다. –

+0

답장을 보내 주셔서 감사합니다. 코드 작성을 마쳤습니다. 키 누르기의 마지막 스크립트는 다음과 같습니다. keybd_event (0x35, 0, 0, 0); Thread.Sleep (15); keybd_event (0x35, 0, 0x0002, 0); 잘 작동하며 모든 프로그램과 상호 작용합니다. D –