2011-04-23 50 views

回答

1

答案在你的問題中,將面板的Capture屬性設置爲true。即使鼠標位於面板窗口之外,所有鼠標輸入事件現在都會指向面板。然而,這是一個臨時條件(它應該是),點擊按鈕傳遞到面板後,點擊按鈕將取消捕獲。 MouseCaptureChanged事件讓你知道什麼時候發生。無條件捕獲鼠標不是一種選擇,例如,鍵入Ctrl + Esc將始終取消它。

1

您可以處理表格本身的MouseClick事件。

class YourForm : Form 
{ 
    protected override void OnMouseClick(MouseEventArgs e) 
    { 
     base.OnMouseClick(e); 

     // Do something. 
    } 
} 
3

要捕獲全局鼠標和鍵盤事件,您需要捕獲WM_MOUSE_LL和WM_KEYBOARD_LL窗口消息,而不僅僅是WM_MOUSE和WM_KEYBOARD。這些事件只能在NT/2000/XP中捕獲。在後來的操作系統版本中,這是不可能的(因爲我假設的安全原因很明顯)。

如果你在這裏使用NT/2000/XP是一些示例代碼:

http://www.codeproject.com/KB/cs/globalhook.aspx