![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Всем привет. Возникла такая проблемка. Как реализовать задержку между кодом программы без применения sleep().
Код:
procedure dvizhok(); delay(10000); keybd_event(1,29,0,0); delay(100); setcursorpos(812,560); delay(100); mouse_event(mouseeventf_move,1,0,0,0); delay(100); end; Код:
procedure Delay (Milliseconds: Integer); var Tick: DWord; Event: THandle; begin Event := CreateEvent(nil, False, False, nil); try Tick := GetTickCount + DWord(Milliseconds); while (Milliseconds > 0) and (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do begin Application.ProcessMessages; Milliseconds := Tick - GetTickcount; if Application.Terminated then Exit; end; finally CloseHandle(Event); end;end; |
#2
|
||||
|
||||
![]() Сделать этот код в отдельном потоке и там смело применять Sleep. И пока поток выполняется, не запускать второй его копии.
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
||||
|
||||
![]() Как мне дождатся завершения потока?
|
#4
|
||||
|
||||
![]() А его ещё и дожидаться надо? Вообще флаг Terminated вроде, но не проще тогда код, который после завершения, в конец потока дописать?..
jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
||||
|
||||
![]() По сегоднешнему поиску по форуму на счет флага terminated это приостановка потока.
Цитата:
|
#6
|
||||
|
||||
![]() Что должно происходить после завершения потока?
jmp $ ; Happy End! The Cake Is A Lie. |
#7
|
|||
|
|||
![]() WaitForSingleObject
|