Есть процедура, которая многократно выполняется в головной программе:
Код:
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;
Проблема в том, что при многократных вызовах иногда не успевают обработаться или вовсе не обрабатываются процедуры SetCursorPos, Mouse_Event.
Помогает вставка процедуры Sleep(X), но на разных компьютерах и при разной загрузке процессора это X может быть меньше или больше, а время работы программы очень нужно сократить, и минимальное оптимальное X неизвестно.
Application.ProcessMessages - не помогает.
5 часов копался в интернете, так и не понял. Запутался в этих процедурах WaitForInputIdle, SleepEx, WaitForSingleObject, GetQueueStatus и т.д. Что же здесь может помочь, чтобы заставить эти процедуры выполняться последовательно, без неразберихи? И неужели без потоков решить проблему не удастся? Это что же, на каждый Mouse_Event теперь поток создавать?