Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Wpf MouseLeftButtonDown-如何知道内部处理已完成_C#_Wpf_Onmousedown - Fatal编程技术网

C# Wpf MouseLeftButtonDown-如何知道内部处理已完成

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

作为UserControl中需要的某些功能的一部分,我需要捕获鼠标消息。捕获应用程序外部的屏幕部分。开始捕获时,我有一个简单的按钮,一切正常。SetHook可以工作,我可以看到WM_xxxx消息并相应地处理它们

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。

嗨,不确定是谁投票否决了你,但我会尝试(甚至没有想到!)并让你知道。遗憾的是,不用了,无论如何谢谢你,因为我没有想到捕捉到这一点。