Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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模拟鼠标点击速度不如实际点击速度_C#_Wpf_Input_Automation_Pinvoke - Fatal编程技术网

C# WPF模拟鼠标点击速度不如实际点击速度

C# WPF模拟鼠标点击速度不如实际点击速度,c#,wpf,input,automation,pinvoke,C#,Wpf,Input,Automation,Pinvoke,我正在WPF窗口上模拟鼠标输入,使用中建议的SendInput方法。 基本上,我为MouseDown所做的是: //Some data initialization e.g. determine where to click .... SetCursorPos(x, y); var inputMouseDown = new INPUT { Type = 0 }; inputMouseDown.Data.Mouse.Flags = 0x0002; // left button down var

我正在WPF窗口上模拟鼠标输入,使用中建议的SendInput方法。
基本上,我为MouseDown所做的是:

//Some data initialization e.g. determine where to click
....
SetCursorPos(x, y);

var inputMouseDown = new INPUT { Type = 0 };
inputMouseDown.Data.Mouse.Flags = 0x0002; // left button down

var inputs = new[] { inputMouseDown };
SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(INPUT)));
并立即与以下内容相同:

//Prepare as before
....

var inputMouseUp = new INPUT { Type = 0 };
inputMouseUp.Data.Mouse.Flags = 0x0004; // left button up

//Send input as before
....
当我使用此代码单击WPF按钮时,它会按预期工作,但有延迟,我无法解释:
我测量了从鼠标向上到该技术和实际单击控件的预期结果之间的时间
使用低级鼠标挂钩进行鼠标向上检测。
在我所有的测量中,WPF处理物理鼠标点击的速度(大约200毫秒)似乎比模拟鼠标点击的速度更快

我尝试了数百次,并进行了各种调整(例如向下事件和向上事件之间的延迟),但增量保持不变


延误的原因是什么?如何解决这个问题?

有两个片段,这相当奇怪。中间是什么?什么都没有,最多是在指定的时间间隔内按住鼠标键的睡眠“最多”到底是什么意思?不要在两者之间放任何东西。当您可以传递输入时,也不必费心了[2]。不要随意点击任意位置,希望你能找到什么。这不是问题,我也尝试了你的建议。问题不是它不工作,问题是它比点击实际鼠标慢