2013-08-14 3 views
3

코드에서 마우스 승격을 사용하지 않도록 설정하면 Windows에서 터치 이벤트를 마우스 이벤트로 해석하지 못하게 할 수 있습니까?마우스 승격 사용 안 함

WPF 응용 프로그램에서 터치 이벤트를 캡처하고 이러한 상호 작용이 마우스 포인터 가시성과 위치에 영향을 미치기를 원하지 않습니다.

정확하게 수행하고있는 것으로 보이는 TouchFrameEventArgs.SuspendMousePromotionUntilTouchUp Method이 있습니다. 불행히도 Silverlight 및 Windows Phone에서만 사용할 수 있습니다.

또한 두 번 클릭 및 마우스 오른쪽 버튼으로 클릭을 사용하지 않도록 설정하는 데 사용할 수있는 시스템 설정이 있지만 마우스 프로모션을 전체적으로 사용하지 않도록 설정할 수는 없습니다.

Windows 8 특정 솔루션이나 낮은 수준의 솔루션이 도움이 될 것입니다.

답변

0

는 (적어도 윈도우 8.1 및 .NET 4.5까지) 그러한 옵션이있을 것 같지 않습니다.

마우스 승격을 사용하지 않도록 설정하는 유일한 방법은 시스템 제어판 (제어판 열기, "펜 및 터치"열기, "터치"탭 선택, "손가락으로 사용" 입력 장치 ") 또는 레지스트리를 통해 (HKLM \ 소프트웨어 \ 마이크로 소프트 \ 위습 \ 터치, TouchGate = 0 = 사용 안 함 터치) 다음

여전히 다음 (불쾌한) 대안 중 하나를 사용하여 터치 입력을 처리 할 수 ​​있습니다 :

마지막으로, 당신은 custom routed events을 사용하거나 touch injection를 사용하여 응용 프로그램에 수집 된 터치 데이터를 삽입 할 수 있습니다. 당신은, 물론, 시스템의 다른 응용 프로그램, 그래서이 솔루션에 대한 느슨한 터치 지원은 일반적으로 당신에게 너무 도움이 될하지 않을 것이다 어떤 경우

.

2
public static class PreventTouchToMousePromotion 
{ 

    public static void Register(FrameworkElement root) 
    { 
     root.PreviewMouseDown += Evaluate; 
     root.PreviewMouseMove += Evaluate; 
     root.PreviewMouseUp += Evaluate; 
    } 

    private static void Evaluate(object sender, MouseEventArgs e) 
    { 
     if (e.StylusDevice != null) 
     { 
      e.Handled = true; 
     } 
    } 
} 

Excample 사용법 :

public MainWindow() 
    { 
     InitializeComponent(); 
     PreventTouchToMousePromotion.Register(this); 
    } 

또는이 게시물에

http://social.msdn.microsoft.com/Forums/vstudio/en-US/9b05e550-19c0-46a2-b19c-40f40c8bf0ec/prevent-a-wpf-application-to-interpret-touch-events-as-mouse-events?forum=wpf#9965f159-04a4-41ed-b199-30394991f120

+0

감사를 살펴 그러나 불행하게도이 문제가 해결되지 않습니다. 그것은 내 응용 프로그램에 대한 마우스 이동 메시지를 필터링 않습니다. 여태까지는 그런대로 잘됐다. 그러나 화면을 터치하면 마우스 포인터가 여전히 움직입니다. –

+0

나는 TouchFrameEventArgs.SuspendMousePromotionUntilTouchUp 방법이 제안보다 훨씬 더 많은 일을하지 않을 것이라고 생각하기 시작하고있다. –