|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как дождаться завершения процедуры?
Есть процедура, которая многократно выполняется в головной программе:
Код:
procedure mEmDmU(i,j: Cardinal); begin SetCursorPos(i,j); Mouse_Event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); Mouse_Event(MOUSEEVENTF_LEFTUP,0,0,0,0); end; Помогает вставка процедуры Sleep(X), но на разных компьютерах и при разной загрузке процессора это X может быть меньше или больше, а время работы программы очень нужно сократить, и минимальное оптимальное X неизвестно. Application.ProcessMessages - не помогает. 5 часов копался в интернете, так и не понял. Запутался в этих процедурах WaitForInputIdle, SleepEx, WaitForSingleObject, GetQueueStatus и т.д. Что же здесь может помочь, чтобы заставить эти процедуры выполняться последовательно, без неразберихи? И неужели без потоков решить проблему не удастся? Это что же, на каждый Mouse_Event теперь поток создавать? |
#2
|
||||
|
||||
Зачем на каждый? Один на твою процедуру и создать собственное событие для потока...чё-нить типо
Код:
TOnFinalMyProc = procedure of object; Delphi в Internet - блог о программировании. Малоизвестные и редко обсуждаемые темы программирования на Delphi |