2011-07-06 11 views
-1

나는 좌절감을 느낍니다. 내 응용 프로그램에 집중 여부에 관계없이 모든 창에서 키 누르기 이벤트를 캡처하는 좋은 코드 조각을 찾는 데 몇 시간을 보냈습니다. 백그라운드에서 작업하여 F5 키를 캡처하는 응용 프로그램을 만들어야합니다. 누구든지 코드를 가지고 있습니까?VB.NET에서 Keypress 이벤트 캡처

답변

1
아래 코멘트에 Lucianovici의 메모를 확인해야합니다은

이 모든 C# 및 OP는 VB.Net에 대해 질문했지만 개념은 동일합니다 ...

나는 this project을 사용하여 글로벌 키 프레스를 처리하는 간단한 유틸리티를 작성했습니다. 라이브러리를 다운로드하고 프로젝트에 참조를 추가하고 Gma.UserActivityMonitor 네임 스페이스를 가져 오십시오.

양식로드 이벤트에서 핸들러를 추가하십시오.

HookManager.KeyDown += KeyDown; 
HookManager.KeyUp += KeyUp; 

이러한 방법 중 하나를 누르면 제어 키가 눌러집니다.

void KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.LControlKey || e.KeyCode == Keys.RControlKey) 
    { 
     //Do Stuff 
    } 
} 
void KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.LControlKey || e.KeyCode == Keys.RControlKey) 
    { 
     //Do Stuff 
    } 
} 

이렇게 작성된 방식으로 다른 앱에서 처리 할 수 ​​있습니다. 키를 "캡처"하고 다른 응용 프로그램에서 처리를 중단하려면 이벤트 처리기에서 Handled 속성을 true로 설정하십시오.

e.Handled = true; 

편집 : VB.Net

에 위의 코드의 변환이 VB.Net에서 핸들러를 추가하려면 AddHandlerAddressOf를 사용합니다.

AddHandler HookManager.KeyDown AddressOf KeyDown 

기능 KeyDownKeyUp은 다음과 같이 보일 것이다.

Sub KeyDown(ByVal sender as Object, ByVal e as KeyEventArgs) 
    If e.KeyCode = Keys.LControlKey Or e.KeyCode = Keys.RControlKey Then 
     'Do Stuff 
    End If 
End Sub 
+0

저는 VB.NET을 처음 접했을뿐입니다. 원시, 간단한 VB.NET에서 답을 줄 수있는 방법이 있습니까? – Logan

0

내가 세부에서 VB.NET 솔루션 대답 this topic의 중복,있다. Tim Coker가 제안한 것과 동일한 후크 라이브러리를 사용합니다.