我有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#的示例实现.
希望有点帮助.