2012-06-06 2 views
0

KeyDown 및 KeyPress 이벤트를 통해 키 입력을 모니터링하는 C# 응용 프로그램이 있습니다. 특히, (휴대용 장치에서) VolumeMute 키 스트로크가 특별한 처리를하는 것을 지켜 봅니다. 한 가지 문제로 잘 작동합니다. Windows는 VolumeMute 키 입력을 가로 채고 시스템 볼륨을 음소거하는 것처럼 보입니다. 키 입력은 신호 처리 (e.Handled = true) 되어도 시스템 볼륨을 음소거하기 때문에 Windows에서 키 입력을 가로 채기 전에 내 앱이 처리한다고 생각합니다. BTW, 동일한 코드는 내가 잡는 다른 키 입력 (예 : Backspace, ect)에서 완벽하게 작동합니다.VolumeMute KeyPress - 처리 후 이벤트를 취소 할 수 없습니다.

Windows에서이 볼륨 음소거를 중지하는 방법이 있습니까?

시스템 : WINXP SP3는 닷넷 4 클라이언트 프로파일은 Windows는 코드 토글 같은

bool keyHandled = false; 

    private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (keyHandled) 
     { 
      e.Handled = true; 
     } 
    } 
    // ===================================== 
    private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     keyHandled = false; 



     switch (e.KeyCode) 
     { 

      case Keys.VolumeMute: 
       DoSpecialProcessing(); 
       keyHandled = true; 
       break; 
      default: 

       break; 
     } 

     e.Handled = keyHandled; 

    }    
+0

무엇이 요점입니까? 사용자가 다른 앱으로 전환하고 음소거, 다시 전환합니다. 또는 트레이 아이콘을 사용하십시오. –

+0

Hans, 버튼을 누를 때 키 스트로크를 보내는 리모콘을 용도 변경하려고합니다. 하나의 버튼은 VolumeMute 키 입력을 보냅니다. 이 버튼을 누르면 다른 기능 (음소거가 아닌)을 수행하려고합니다. –

답변

0

버튼 역할을, 그것은 처음 언론과 "음소거 음소거됩니다 자르는

응용 프로그램에게 양식 "다음 언론에서. VolumeMute를 다시 시뮬레이션하기 만하면됩니다.

answer은 어떻게 수행하는지 설명합니다.

참고 : KeyDown 처리기에서이 메서드를 호출하면 BeginInvoke 또는 PostMessage를 사용하여 메시지 대기열에 메시지를 게시하고 경쟁 조건을 피하기 위해 즉시 반환해야합니다.

+0

Jacob에게 감사드립니다. 하지만 나는 시스템 사운드를 음소거/음소거하려고하지 않습니다. 이 키 입력으로 * Windows에서 음소거/음소거를 수행하지 못하게하고 싶습니다. 내 응용 프로그램은 VolumeMute 키 입력을 트랩하고 처리 할 수 ​​있습니다. 그러나 나는 윈도우가 뮤트/umute 토글을 수행하는 것을 막을 수는 없다. –

+0

나는 이해한다. KeyDown 이벤트 후 다른 VolumeMute 키를 시뮬레이션하면 최종 결과는 기본 Windows 동작을 억제 한 것처럼됩니다. 내가 맞습니까? –

+0

아, 네가 지금 무슨 말하는지 알 겠어. 예, 아마 작동 할 것입니다. 내가 원하는만큼 깨끗한 해결책은 아니지만. * AutoHotKey를 테스트하여 VolumeMute 키 스트로크를 Windows가보기 전에 다른 키 *로 다시 매핑 할 수 있는지 확인합니다. 나는 다른 누군가가 알고 싶어하는 결과를 여기 게시 할 것이다. –

0

확인. AutoHotKey를 사용하여 VolumeMute를 다른 키로 다시 매핑했습니다. 중요하게도 Windows는 VolumeMute 키 입력이 재 매핑되기 전에 절대로 볼 수 없으며 사운드를 음소거하지 않습니다. 그래서 필요할 때마다이 AutoHotKey 매핑 스크립트를 시작할 수 있습니다. Windows 레지스트리를 망친 것. 제안 해줘서 고마워.

관련 문제