C#-WinForms鼠标捕获

我有Windows窗体应用程序,我需要捕获窗口外的鼠标移动.我在窗口类中的简化代码是:

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

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

如您所见,当用户按下按钮时,我的程序应该开始跟踪鼠标(即使它不在窗口内-这是一项关键功能!)但是我得到的却是非常奇怪的行为.如果我将鼠标移到窗口内,一切都很好!被写入控制台.但是,当我将鼠标移到窗口外部时,仅OnMouseMove仅被调用一次(并且该点实际上在外部).然后,如果我将鼠标移到窗口外的任何地方,它将不再被调用.如果我将鼠标返回窗口,则一切都完美.移开-1条消息,在窗口中移动-确定.

有人可以帮忙吗?

解决方法:

您将需要一个全局鼠标挂钩.我建议您首先阅读有关钩子的内容,例如.在MSDN上.可以在CodeProject找到C#的示例实现.

希望有点帮助.

上一篇:c#-winforms应用程序如何在没有焦点的情况下接受用户输入?


下一篇:c#-判断鼠标是否在表单上方的最佳方法是什么?