On-line: PSP, NickSam, гостей 1. Всего: 3 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 1786
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.06.11 04:05. Заголовок: Как "заморозить" выполнение программы ?


Всем привет.
Подскажите как можно остановить (заморозить) выполнение программы до выполнения определенного события в другой программе ?
Т.е. я из своей программы на хХарборе (терминалка) запускаю допустим программу "Скачивания из инета" на МиниГуи.
Терминалку на хХарборе нужно "заморозить" до конца скачивания ! Иначе ЮЗВЕР будет тыкать мышкой раньше времени....
После того как скачался файл нужно вернуться обратно в терминалку на хХарборе !

Можно конечно сделать "семафорный файл" после получения файла из инета, а в хХарборе проверять каждую минуту есть такой файл или нет.
Но это можно было делать и на Клипере (проверку файла).
А что нам может предложить хХарбор ?



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 66 , стр: 1 2 3 4 All [только новые]


постоянный участник




Пост N: 3278
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 04.07.20 19:48. Заголовок: PS Ф-я с mutex, была..


PS
Ф-я с mutex, была выше, используется для блокировки повторных запусков с иконки, far кликами Enter-ом.
Разрешаются повторные запуски проги с одного каталога + ini файл, т.е. с разными ini (беру без пути),
можно делать запуски одной программы уст. в какую то dir, а повторный запуск с этим ini не пройдет,
причем я не даю никаких сообщений на это, просто выхожу из запуска если mutex уже есть.
Т.е. с одного каталога установки программу можно запускать с разными ini (в них указание на базу)
Имя mutex формирую upper(hb_ProgName() + cDop) в ф-ии видно алгоритм.
В hmg ф-я IsExeRuning() так же использует mutex, но только из имени exe, жесткая блокировка 2 запуска проги.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1567
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 04.07.20 21:44. Заголовок: Спасибо за информаци..


Спасибо за информацию, попробую

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7494
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.08.23 11:50. Заголовок: Всегда использовал и..


Andrey пишет:

 цитата:
Подскажите как можно остановить (заморозить) выполнение программы до выполнения определенного события в другой программе ?


Смотреть пример у Григория \samples\Advanced\FreezeAppExecution) !


Всегда использовал и считал что невозможно запустить вторую копию программы...
   // Проверка на запуск второй копии программы 
OnlyOneInstance( PROGRAM )

Однако мои юзера опровергли это мнение...
Можно запустить вторую копию программы при одном условии, если комп/сервер-терминала выводишь из спящего режима,
то вторую копию программы можно запустить.
Сам так один раз смог у себя сделать, повторно не смог.
Как это (второй запуск) можно железно прекратить ?
Только нужно учитывать, что прога может запускаться на сервере-терминалов у разных пользователей одновременно.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4361
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.08.23 12:33. Заголовок: Andrey Используй (с..


Andrey
Используй (с mutex)
SET MULTIPLE QUIT // выход без сообщения
или
SET MULTIPLE QUIT WARNING // выход с сообщением
или ф-ей
IsExeRunning( StrTran( GetExeFileName (), '\', '_' ) )
где параметр (цветом) может быть каталог, ini файл, ... что будет идентифицировать уникальность запуска

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7495
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.08.23 13:00. Заголовок: SergKis пишет: SET ..


SergKis пишет:

 цитата:
SET MULTIPLE QUIT WARNING // выход с сообщением


А туда можно прикрутить переключение на хендл запущеной программы ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4362
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.08.23 13:09. Заголовок: Andrey пишет А туда ..


Andrey пишет
 цитата:
А туда можно прикрутить переключение на хендл запущеной программы ?


Это команда препроцессора, так что замени и делай, что надо
 
#translate SET MULTIPLE QUIT [ <warning: WARNING> ] ;
=> ;
iif ( _HMG_IsMultiple , ( iif ( <.warning.> , AlertStop( _HMG_MESSAGE\[4] ) , ) , ExitProcess() ) , )

значение _HMG_IsMultiple такое (PROCEDURE Init)
_HMG_IsMultiple := IsExeRunning ( StrTran( GetExeFileName (), '\', '_' ) )



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 66 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 208
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет