2011-04-23 65 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