11 个解决方案
#1
贴代码,不会这样的,肯定是其它什么地方影响到了。
#2
我的代码是模拟鼠标和键盘输入的,理想的是每模拟一次输入,都暂停个几秒,等界面变化后,在进行下次模拟输入
//点击再次群发
SetCursorPos(200, 800);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
//全选按钮
SetCursorPos(420, 85);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
Thread.Sleep(2000);
//下一步按钮
SetCursorPos(250, 800);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
Thread.Sleep(2000);
//点击输入框
SetCursorPos(150, 800);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
Thread.Sleep(1000);
#3
但是发现,每次模拟输入完了之后,等待的时间并不是sleep里面的时间,就这造成了,界面还没有变化,就开始下一次模拟输入了。我改了时间,但是效果不明显
#4
Thread.CurrentThread.Join(2000);
#5
这个不是阻塞调用它的父线程,直到线程结束才返回父线程嘛?
#6
是的,我想知道对你的程序有效吗?
#7
Thread.CurrentThread.Join(2000);
这个不是阻塞调用它的父线程,直到线程结束才返回父线程嘛?
是的,我想知道对你的程序有效吗?
我试了下,和sleep的效果差不多,但是我发现了一个奇怪的现象
for (int i = 0; i < 2; i++)
{
Thread.Sleep(3000);
SetCursorPos(50, 100);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
//Thread.Sleep(3000);
}
这个代码我是要点击三次,每次点击之间暂停3000毫秒,假如我把sleep放在mouse_event后面,时间久不太准备,而且,经常出现只点击了两下的情况。但是我无意中把sleep放到了循环的开头哪里,就是上面的代码,发现时间就准确多了,最关键的是每次运行都是点击了三次。不知道怎么回事,发现一旦用了线程之后奇怪的事情很多
#8
Thread.CurrentThread.Join(2000);
这个不是阻塞调用它的父线程,直到线程结束才返回父线程嘛?
是的,我想知道对你的程序有效吗?
我试了下,和sleep的效果差不多,但是我发现了一个奇怪的现象
for (int i = 0; i < 3; i++)
{
Thread.Sleep(3000);
SetCursorPos(50, 100);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
//Thread.Sleep(3000);
}
这个代码我是要点击三次,每次点击之间暂停3000毫秒,假如我把sleep放在mouse_event后面,时间久不太准备,而且,经常出现只点击了两下的情况。但是我无意中把sleep放到了循环的开头哪里,就是上面的代码,发现时间就准确多了,最关键的是每次运行都是点击了三次。不知道怎么回事,发现一旦用了线程之后奇怪的事情很多
错了,刚才敲错了,i=3,不是等于2。问题还是那样,sleep前后顺序影响了点击的次数和时间不对劲
#9
同样求解。请大牛解答
#10
同样求解。请大牛解答
你也碰到这样的问题了?
#11
lz看看这个帖子:
What Thread sleep method is most precise: Monitor.Wait vs System.Timer vs DispatchTimer vs Threading.Timer
http://*.com/questions/10609718/what-thread-sleep-method-is-most-precise-monitor-wait-vs-system-timer-vs-dispat
How accurate is Thread.Sleep(TimeSpan)?
http://*.com/questions/1303667/how-accurate-is-thread-sleeptimespan
What Thread sleep method is most precise: Monitor.Wait vs System.Timer vs DispatchTimer vs Threading.Timer
http://*.com/questions/10609718/what-thread-sleep-method-is-most-precise-monitor-wait-vs-system-timer-vs-dispat
How accurate is Thread.Sleep(TimeSpan)?
http://*.com/questions/1303667/how-accurate-is-thread-sleeptimespan
#1
贴代码,不会这样的,肯定是其它什么地方影响到了。
#2
贴代码,不会这样的,肯定是其它什么地方影响到了。
我的代码是模拟鼠标和键盘输入的,理想的是每模拟一次输入,都暂停个几秒,等界面变化后,在进行下次模拟输入
//点击再次群发
SetCursorPos(200, 800);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
//全选按钮
SetCursorPos(420, 85);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
Thread.Sleep(2000);
//下一步按钮
SetCursorPos(250, 800);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
Thread.Sleep(2000);
//点击输入框
SetCursorPos(150, 800);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
Thread.Sleep(1000);
#3
贴代码,不会这样的,肯定是其它什么地方影响到了。
但是发现,每次模拟输入完了之后,等待的时间并不是sleep里面的时间,就这造成了,界面还没有变化,就开始下一次模拟输入了。我改了时间,但是效果不明显
#4
Thread.CurrentThread.Join(2000);
#5
Thread.CurrentThread.Join(2000);
这个不是阻塞调用它的父线程,直到线程结束才返回父线程嘛?
#6
Thread.CurrentThread.Join(2000);
这个不是阻塞调用它的父线程,直到线程结束才返回父线程嘛?
是的,我想知道对你的程序有效吗?
#7
Thread.CurrentThread.Join(2000);
这个不是阻塞调用它的父线程,直到线程结束才返回父线程嘛?
是的,我想知道对你的程序有效吗?
我试了下,和sleep的效果差不多,但是我发现了一个奇怪的现象
for (int i = 0; i < 2; i++)
{
Thread.Sleep(3000);
SetCursorPos(50, 100);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
//Thread.Sleep(3000);
}
这个代码我是要点击三次,每次点击之间暂停3000毫秒,假如我把sleep放在mouse_event后面,时间久不太准备,而且,经常出现只点击了两下的情况。但是我无意中把sleep放到了循环的开头哪里,就是上面的代码,发现时间就准确多了,最关键的是每次运行都是点击了三次。不知道怎么回事,发现一旦用了线程之后奇怪的事情很多
#8
Thread.CurrentThread.Join(2000);
这个不是阻塞调用它的父线程,直到线程结束才返回父线程嘛?
是的,我想知道对你的程序有效吗?
我试了下,和sleep的效果差不多,但是我发现了一个奇怪的现象
for (int i = 0; i < 3; i++)
{
Thread.Sleep(3000);
SetCursorPos(50, 100);
mouse_event(MouseEventFlag.LeftDown | MouseEventFlag.LeftUp, 0, 0, 0, UIntPtr.Zero);
//Thread.Sleep(3000);
}
这个代码我是要点击三次,每次点击之间暂停3000毫秒,假如我把sleep放在mouse_event后面,时间久不太准备,而且,经常出现只点击了两下的情况。但是我无意中把sleep放到了循环的开头哪里,就是上面的代码,发现时间就准确多了,最关键的是每次运行都是点击了三次。不知道怎么回事,发现一旦用了线程之后奇怪的事情很多
错了,刚才敲错了,i=3,不是等于2。问题还是那样,sleep前后顺序影响了点击的次数和时间不对劲
#9
同样求解。请大牛解答
#10
同样求解。请大牛解答
你也碰到这样的问题了?
#11
lz看看这个帖子:
What Thread sleep method is most precise: Monitor.Wait vs System.Timer vs DispatchTimer vs Threading.Timer
http://*.com/questions/10609718/what-thread-sleep-method-is-most-precise-monitor-wait-vs-system-timer-vs-dispat
How accurate is Thread.Sleep(TimeSpan)?
http://*.com/questions/1303667/how-accurate-is-thread-sleeptimespan
What Thread sleep method is most precise: Monitor.Wait vs System.Timer vs DispatchTimer vs Threading.Timer
http://*.com/questions/10609718/what-thread-sleep-method-is-most-precise-monitor-wait-vs-system-timer-vs-dispat
How accurate is Thread.Sleep(TimeSpan)?
http://*.com/questions/1303667/how-accurate-is-thread-sleeptimespan