WPF 창의 외부에서 커서 이동 이벤트를 감지하는 방법이 있습니까? 커서가 윈도우 외부로 이동했는지 알기 위해 노력하고 있지 않습니다. 마우스가 wpf 윈도우 경계 밖으로 이동하더라도 단순히 이동 이벤트에 계속 가입하려고합니다. 나는 윈도우 내에서 움직임을 다루는 많은 것들을 발견 할 수 있었지만, 그것의 바깥에는 아무것도 없었다. (실제로는 아무 것도 작동하지 않았다.) 질문은 외부 운동에 대해 질문하는 경우에도 모두 본질적으로 창 안에서만 작업했습니다.wpf 창 경계 외부의 커서 이동 이벤트
지금까지 솔루션을 찾을 수 없었기 때문에 다음 코드를 사용했습니다. 이 코드가 얼마나 효율적인 지 잘 모르겠습니다. 시스템이 이미 마우스 움직임을 검사하고 있다면 별도의 검사를 추가하는 것이 비효율적이라고 생각합니다. 그러나, 나는 그것에 대한 좋은 참조를 찾을 수 없기 때문에 나는 시스템 부분을 이용할 수 없었다.
참고 : 나는 이것을하는 기존의 방법을 찾으려고합니다. 내 코드는 제대로 작동하지만 이미 구독 할 수있는 시스템 내에서 코드를 생성하는 이벤트가있는 경우이 여분의 타이머 루프가 추가 리소스를 낭비하기 때문에 비효율적 일 수 있습니다. 마우스가 바운더리 바깥으로 움직이는 지 감지하지 않으려 고합니다. 화면에서 마우스가 움직이는 위치에 관계없이 좌표를 기록하려고합니다. 따라서 마우스가 두 번째 모니터에서 내 앱 창에서 멀리 떨어진 곳으로 이동하면 이벤트가 계속 발생하고 알림이 발생합니다. 내 타이머 구현 보고서는 항상 좌표를 지정하지만 이미 작업을 수행하는 무언가 위에 여분의 레이어를 추가하지는 않습니다. 이것은 논평 한 사람들과 내가받은 대답에 근거한 큰 혼란으로 보입니다.
public MainWindow()
{
InitializeComponent();
InitializeCursorMonitoring();
}
private void InitializeCursorMonitoring()
{
var point = System.Windows.Forms.Cursor.Position;
var timer = new System.Windows.Threading.DispatcherTimer();
timer.Tick += delegate
{
if (point != System.Windows.Forms.Cursor.Position)
{
point = System.Windows.Forms.Cursor.Position;
System.Diagnostics.Debug.WriteLine(String.Format("X:{0} Y:{1}",
System.Windows.Forms.Cursor.Position.X,
System.Windows.Forms.Cursor.Position.Y));
}
};
timer.Interval = new TimeSpan(0, 0, 0, 0, 100);
timer.Start();
}
마우스 캡처로 시도하십시오 .. – Sankarann
@Sankarann 좀 자세히 설명해 주시겠습니까? –
보세요 ... http://stackoverflow.com/questions/942357/what-does-it-mean-to-capture-the-mouse-in-wpf –