2013-07-10 21 views
1

Im C#에서 keybd_event win API 호출을 사용하고 alt + f4, alt + tab과 같은 특수 키 누르기를 시뮬레이트하고 싶습니다. 내 프로그램은 shift + p, altgr + w 및 탭의 간단한 사용과 같은 "간단한"키 누름을 처리 할 수 ​​있습니다. 또는 입력도 작동하지만 두 개의 특수 버튼이있을 때 (특수 버튼의 경우 alt, shift, ctrl 또는 기능 버튼을 의미합니다.) 그것은 아무것도하지 않는 것 같습니다. 내 프로그램은 여러 가지 양식을 원격 데스크톱을 통해 처리해야합니다. 즉,이 keybd_event 호출을 사용하는 이유는 무엇입니까? 예를 들어 alt + f4는 로컬로도 작동하지 않습니다 (메모장에서 테스트 중이지만이 명령으로 닫을 수는 없습니다). 누구든지 내가 뭘 잘못하고 있는지 생각해? 그것들을 작동시킬 수 있습니까? 사전에keybd_event를 한 번에 두 개 이상의 키 누름을 처리하는 방법?

감사합니다!

편집 : 나는 내가 모든 승리의 API 호출을 저장하는 같이 DllImport 클래스를 만들었습니다

. 또한, 예를 들어, 일부 도우미 방법이 있습니다

private void PressAlt() 
    { 
     DLLImport.keybd_event(0xA0, 0x38, 0, 0); 
    } 

private void ReleaseAlt() 
    { 
     DLLImport.keybd_event(0xA0, 0x38, 0x0002, 0); 
    } 
별도의 방법이 사용 탭

, 메신저 :

DLLImport.keybd_event(0x09, 0x0f, 0, 0); //press tab 

...

DLLImport.keybd_event(0x09, 0x0f, 0x0002, 0); //release tab 

그리고 메신저 지금 테스트 다음을 포함합니다 :

PressAlt(); 

PressSpecial("tab"); 

ReleaseSpecial("tab"); 

ReleaseAlt(); 
+0

일부 소스 코드를 표시 할 수 있습니까? 보이지 않는 문제를 확인하는 것은 어렵습니다. –

+0

나는 나의 질문을 편집했다 (나의 사과, 나는 아직도이 포럼에서 새로운). – Daniel

답변

1

코드에서 osted, 가상 키 코드 (MSDN reference here) 중 하나 이상에 대해 잘못된 값이있는 것 같습니다.

예를 들어, 코드 0xA0가 왼쪽 Shift 키 (VK_LSHIFT), 당신은 0x12 (VK_MENU) 또는 0xA4 (VK_LMENU가) 대신 시도해야합니다.

주 - 일반적인 가상 키 코드와 스캔 코드 on CodeProject에 대한 유용한 요약이 있습니다.

관련 문제