C# Wpf MouseLeftButtonDown-如何知道内部处理已完成
作为UserControl中需要的某些功能的一部分,我需要捕获鼠标消息。捕获应用程序外部的屏幕部分。开始捕获时,我有一个简单的按钮,一切正常。SetHook可以工作,我可以看到WM_xxxx消息并相应地处理它们C# Wpf MouseLeftButtonDown-如何知道内部处理已完成,c#,wpf,onmousedown,C#,Wpf,Onmousedown,作为UserControl中需要的某些功能的一部分,我需要捕获鼠标消息。捕获应用程序外部的屏幕部分。开始捕获时,我有一个简单的按钮,一切正常。SetHook可以工作,我可以看到WM_xxxx消息并相应地处理它们 private void Capture_OnClick(object sender, RoutedEventArgs e) { getLeftClicks = _getLeftClicks.First; _hookID = SetHook(_pr
private void Capture_OnClick(object sender, RoutedEventArgs e)
{
getLeftClicks = _getLeftClicks.First;
_hookID = SetHook(_proc);
}
现在我使用单击图像来启动捕获过程,但我必须在处理程序中插入Thread.Sleep语句才能使其工作
private void Capture_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (_hookID != null)
UnhookWindowsHookEx(_hookID);
getLeftClicks = _getLeftClicks.First;
Thread.Sleep(200); // need to wait for this mousedown to finish before trying to hook the mouse
_hookID = SetHook(_proc);
}
我想知道的是,在设置钩子代替我发现的任意200ms图形之前,我可以检查一些Windows属性,看看是否一切都完成了。如果需要的话,我会发布更多的代码,但问题的根源就在这里
谢谢,
Jim尝试使用MouseLeftButtonUp事件,而不是MouseLeftButtonDown。嗨,不确定是谁投票否决了你,但我会尝试(甚至没有想到!)并让你知道。遗憾的是,不用了,无论如何谢谢你,因为我没有想到捕捉到这一点。