有沒有辦法檢測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 –