2016-11-20 1 views
0

저는 C#에 대해 매우 익숙하며, 활성 창 (Ctrl + V 명령 전송)에 붙여 넣는 작은 시스템 트레이 응용 프로그램을 만들려고합니다. 창에 쓰여진 짧은 텍스트와 바로 가기 키.단축키를 누른 후 다음 5 건의 키를 청취하십시오.

Ex. | hl을 메모장에 입력하면 응용 프로그램이 활성 창에 Hello를 붙여 넣습니다.

지금까지 시스템에서 stat에 응용 프로그램을 얻으려는 예가 here 인 NotifyIcon을 사용하고 키 다운 이벤트를 수신 대기하도록 키보드 후크를 설정할 수있었습니다.

은 내가 지금 필요한 것은 이것이다 :이 이제 몇 일 동안 수행하는 방법을 찾기 위해 노력하고 벽에 내 머리를 두드리는 있었어요,하지만 난 뭔가를 찾을 수 없습니다

if(e.KeyCode.ToString() == "OemPipe") //if hotkey is pressed 
{ 
    //listen for the next 5 KeyCode 
    if(//next 5 KeyCode are A, B, C, D and E) 
    { 
     //do stuff 
    } 
    else 
    { 
     //ignore and listen for hotkey again 
    } 
} 

나 시작해.

모든 ideeas가 크게 감사하겠습니다. 코드 샘플도 있으면 더 좋을 것입니다.

+0

이 Web Forms 또는 MVC 또는 Windows Forms 또는 WPF 또는 Silverlight입니까? –

+0

키 다운 이벤트 전체 코드 게시 – Aruna

+0

Windows Forms 앱입니다. – user2099654

답변

1

나는 손을 빌려 노력할 것이다.

난 당신이 속성을 스크롤하면 두 개의 흥미로운 것을 알 수하는 KeyEventArgs 객체에 의해 키 코드를 수신하고 있으리라 믿고있어

: 그와

KeyEventArgs.Modifiers 
KeyEventArgs.Shift 

키를 잠시 누른 경우 알을 CTRL, ALT 또는 SHIFT를 누른 상태에서 코드에서 해당 핫키를 누른 상태에서 연속적으로 누른 키를 배열에 추가 할 수 있으며 올바른 조합을 찾거나 다음 키가 나타나지 않으면 배열을 지우는 경우 어떤 작업을 수행 할 수 있습니다 어떤 수식어로.

Somehing 같은 :이 도움이

private void button1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) 
{ 

    if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) 
    { 
     AddtoShiftArray(e.keyCode); 
     clearAllOtherBuffers(); //ignore and listen for hotkey again 

     if(seeIFWithWhatIHaveHereICanDoStuff()){ 
      doMyStuff(); 
      clearShiftBuffer(); 
     } 
    } 
    //Same for ctrl 
    //Same for alt 

} 

희망! : D

관련 문제