c# - SImulated mouse scrolling is processed after sleeps -
i using
for (int = 0; < 10; i++) { mouse_event(mouseeventf_wheel, 0, 0, -10, 0); system.threading.thread.sleep(1000); } to scroll down bit wait second scroll , on. however, seems wait 10 seconds scroll down -100.
i not sure if relevant trying scroll down page in web browser part of windows form (once scroll bottom page loads more , can scroll again).
the problem gui freezes , not updated duration of loop, because running on same thread. see changes every second need run on background thread.
you can use system.timers.timer job. set
system.timers.timer timer = new system.timers.timer(); timer.interval = 1000; timer.autoreset = true; and hook elapsed event in handle scrolling
timer.elapsed += timer_elapsed; timer.start(); you need counter in for-loop. count down until 0 in event handler
int counter = 10; private void timer_elapsed(object sender, system.timers.elapsedeventargs e) { if(counter > 0) { mouse_event(mouseeventf_wheel, 0, 0, -10, 0); counter--; } else { system.timers.timer t = sender system.timers.timer; t.stop(); } } this way can stop timer after 10 iterations
as suggested jakub dÄ…bek can use system.windows.forms.timer. this:
system.windows.forms.timer timer = new system.windows.forms.timer(); timer.interval = 1000; timer.tick += timer_tick; timer.start(); private void timer_tick(object sender, eventargs e) { // here same code above }
Comments
Post a Comment