2010-05-21 99 views
3

我有Windows窗體應用程序,我需要在窗口外捕獲鼠標移動。在我的窗口類我的簡化代碼:WinForms鼠標捕獲

private void ButtonOnClick(object sender, EventArgs e) 
{ 
    Capture = true; 
    MouseMove += OnMouseMove; 
} 

private void OnMouseMove(object sender, MouseEventArgs e) 
{ 
    Console.Out.Write("!"); 
} 

正如你看到的,當用戶按下一個按鈕,我的程序應該開始跟蹤鼠標(哪怕是窗口外 - 這是一個關鍵featue!)但是我得到非常奇怪的行爲。如果我將鼠標移動到窗口內,一切都很好,被寫入控制檯。但是當我將鼠標移動到窗口之外時,只有OnMouseMove被調用一次(並且該點真的在外面)。然後,如果我將鼠標移到窗外的任何位置,它就不會再被調用。如果我把鼠標還給窗戶,一切都是完美的。走開 - 1條消息,在窗口中移動 - 確定。

任何人都可以幫忙嗎?

回答

3

你需要一個全局鼠標鉤。我建議你先讀一些關於鉤子的東西,例如。在MSDN。在C#中的示例實現可以在CodeProject找到。

希望能有所幫助。

+0

謝謝!剛剛研究過來自CodeProject的解決方案,它完美的工作! – levanovd 2010-05-24 10:26:27