Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2011, 00:49   #1
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию Аналог Sleep()

Подскажите, есть ли подобная функция, как Sleep, но которая не останавливает работу программы или как по-другому можно реализовать?
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 29.10.2011, 00:58   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Предназначение функции sleep состоит в том, чтобы останавливать программу ) Или тебе нужно, чтобы она в процессе ожидания реагировала на действия пользователя? Тогда делай sleep мелкими порциями в цикле, и вызывай между ними Application.ProcessMessages;

Последний раз редактировалось mihali4; 29.10.2011 в 01:30.
Son Of Pain вне форума Ответить с цитированием
Старый 29.10.2011, 01:16   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

а зачем вам это?

Хотит 2 действия одновременно? Пустите tThread пускай он зделает что нужно, не застопарив осн. программу.
Человек_Борща вне форума Ответить с цитированием
Старый 29.10.2011, 01:19   #4
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Код:
  // Нажатие 1
  SimulateKeyDown(Key1);
  sleep(CD1);
  SimulateKeyUp(Key1);

  // Нажатие 2
  SimulateKeyDown(Key2);
  sleep(CD2);
  SimulateKeyUp(Key2);
Да, надо чтобы реагировала. В коде выше, например, если я имитирую нажатие 1, то пока CD1 программа не выждет, нажатие 2 не сработает. Мне нужно установить задержку между нажатиями и отпусканиями без остановки программы.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 29.10.2011, 01:24   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Вот:
Код:
procedure Delay(dwMilliseconds: Longint);
 var
   iStart, iStop: DWORD;
 begin
   iStart := GetTickCount;
   repeat
     iStop := GetTickCount;
     Application.ProcessMessages;
   until (iStop - iStart) >= dwMilliseconds;
 end;
Вот маленький аналог sleep
Человек_Борща вне форума Ответить с цитированием
Старый 29.10.2011, 01:37   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Поставьте таймер. Пример:
Код:
...
SimulateKeyDown(Key1);
good:=False;//глобальная переменная
Timer1.Enabled:=True;
while not good do
Application.ProcessMessages;
SimulateKeyUp(Key1);
...

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=False;
good:=True;
end;
mihali4 вне форума Ответить с цитированием
Старый 29.10.2011, 02:21   #7
Хамяг
Форумчанин
 
Аватар для Хамяг
 
Регистрация: 22.08.2008
Сообщений: 105
По умолчанию

либо таймер, либо в отдельный поток вынести действия.
Хамяг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Sleep в потоке Florento Общие вопросы Delphi 13 21.06.2011 21:54
Альтернатива Sleep; mrbadge Общие вопросы Delphi 16 02.05.2011 17:33
Функция Sleep(); VadEr Общие вопросы Delphi 6 10.09.2009 17:45
Проблема с Sleep! k1r1ch Общие вопросы Delphi 11 20.06.2009 19:12
Аналог Sleep() Ants Общие вопросы Delphi 2 18.11.2008 13:11