Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1786
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.06.11 04:05. Заголовок: Как "заморозить" выполнение программы ?
Всем привет. Подскажите как можно остановить (заморозить) выполнение программы до выполнения определенного события в другой программе ? Т.е. я из своей программы на хХарборе (терминалка) запускаю допустим программу "Скачивания из инета" на МиниГуи. Терминалку на хХарборе нужно "заморозить" до конца скачивания ! Иначе ЮЗВЕР будет тыкать мышкой раньше времени.... После того как скачался файл нужно вернуться обратно в терминалку на хХарборе ! Можно конечно сделать "семафорный файл" после получения файла из инета, а в хХарборе проверять каждую минуту есть такой файл или нет. Но это можно было делать и на Клипере (проверку файла). А что нам может предложить хХарбор ?
|
|
|
Новых ответов нет
, стр:
1
2
3
4
All
[см. все]
|
|
|
| постоянный участник
|
Пост N: 3222
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.01.14 23:55. Заголовок: Avf пишет: Пришлось..
Avf пишет: цитата: | Пришлось изменять старые программы, не переписаннные в GUI. xHarbour Compiler build 1.2.1 |
| Попробуй 1.2.3 - в предыдущем ошибок много... Avf пишет: цитата: | Либо подскажите, пожалуйста, где что не так в EXECANDWAIT для такой связки( не вызывается внешняя программа) : |
| Она вызывается, просто на экране не отображается. Читай выше - я столкнулся с этим. Avf пишет: цитата: | После вызова WAITRUNTERM( не восстанавливается экран после выхода из внешней программы). |
| Сделай проще: SAVE SCREEN WAITRUNTERM(cFile) RESTORE SCREEN
|
|
|
|
| |
Пост N: 22
Зарегистрирован: 19.10.05
|
|
Отправлено: 06.02.14 15:07. Заголовок: Неделю отсутствовал...
Вариант с WAITRUNTERM работает на XHarbour EXECANDWAIT, приведенный выше для Harbour, для ХHarbour должен выглядеть как-то иначе.
|
|
|
|
| постоянный участник
|
Пост N: 5744
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.03.18 18:42. Заголовок: Andrey пишет: Хорош..
Andrey пишет: Программа на терминалке хХарбора 1.2.3 Делаю показ надписи и вызываю программу на МиниГуи: @ 10,10 SAY "Загружаю модуль ХХХ !" EXECANDWAIT(CurDrive()+":"+DirName()+"\XXX-MiniGui.exe") Как можно сделать замену надписи в терминалке через 10-15 сек на другую ? @ 10,10 SAY "Ожидаю закрытия модуля ХХХ !"
|
|
|
|
| |
Пост N: 6741
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.03.18 19:16. Заголовок: На вскидку... 1. Пот..
На вскидку... 1. Поток 2. FT_OnTick 3. HB_IdleAdd
|
|
|
|
| постоянный участник
|
Пост N: 5745
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.03.18 21:03. Заголовок: Dima пишет: 2. FT_O..
Dima пишет: цитата: | 2. FT_OnTick 3. HB_IdleAdd |
| Не работал с этим. Подскажи пожалуйста как это работает ?
|
|
|
|
| постоянный участник
|
Пост N: 1385
Зарегистрирован: 27.01.07
|
|
Отправлено: 02.03.18 21:21. Заголовок: Может просто написат..
Может просто написать: "Запущено внешнее приложение XXX. Чтобы продолжить, закройте его", а?))
|
|
|
|
| постоянный участник
|
Пост N: 5747
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.03.18 21:40. Заголовок: PSP пишет: Может пр..
PSP пишет: цитата: | Может просто написать: "Запущено внешнее приложение XXX. Чтобы продолжить, закройте его", а?)) |
| Пока прога на МиниГуи загрузится... Антивирусник его постоянно проверяет, проходит секунд 10. Пользователь тупо пытается нажать ещё раз и раз на кнопку. Из-за этого и вывесил сообщение. Твоя надпись будет нервировать неподготовленного пользователя. Конечно в МиниГуи приложение можно после запуска отправить терминалке сообщение как в примере: * Передача сообщений между приложениями/процессами при помощи сообщения WM_COPYDATA. Но для простой вещи это перебор... Нужно просто через 10-15 секунд изменить надпись.
|
|
|
|
| |
Пост N: 560
Зарегистрирован: 17.06.10
|
|
Отправлено: 02.03.18 23:40. Заголовок: а таймер незя ?..
а таймер незя ?
|
|
|
|
| постоянный участник
|
Пост N: 5748
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.03.18 00:25. Заголовок: fil пишет: а таймер..
fil пишет: А как в хХарборе делать таймер ? Я уже не помню как делать. В Клипере что-то в СТ было, а как сейчас делать не знаю.
|
|
|
|
| |
Пост N: 6742
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.03.18 09:30. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как в хХарборе делать таймер ? |
| http://clipper.borda.ru/?1-4-0-00001192-000-0-0-1498420920 Пост 1539 По Ft_ontick FT_OnTick({|| Mytest() },200) @ 10,10 SAY "Загружаю модуль ХХХ !" EXECANDWAIT(CurDrive()+":"+DirName()+"\XXX-MiniGui.exe") FT_OnTick() Func Mytest() @ 10,10 SAY "Ожидаю закрытия модуля ХХХ !" return nil
|
|
|
|
| |
Пост N: 1206
Зарегистрирован: 20.02.11
|
|
Отправлено: 03.03.18 11:40. Заголовок: Andrey пишет: Польз..
Andrey пишет: цитата: | Пользователь тупо пытается нажать ещё раз и раз на кнопку. Из-за этого и вывесил сообщение |
| Проще кнопку задисаблить после нажатия, и сообщение что запущено внешнее приложение Х... А при завешении этой Х.. - раздисаблить и убрать сообщение
|
|
|
|
|
| постоянный участник
|
Пост N: 1771
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.03.18 11:51. Заголовок: Haz :sm36: сохран..
Haz сохранил экран\сделал новый с крупным письмом типа "Ж Д И Т Е ...", потом все воссстановил. Все время так делаю. Пользователь не такой тупой, все понимает, пусть и не с первого раза.
|
|
|
|
| |
Пост N: 6743
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.03.18 12:12. Заголовок: Можно еще "верту..
Можно еще "вертушку" повесить , пока работает внешнее приложение Х , что бы юзер не подумал что прога висит
|
|
|
|
| постоянный участник
|
Пост N: 5749
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.03.18 15:01. Заголовок: Haz пишет: Проще кн..
Haz пишет: цитата: | Проще кнопку задисаблить после нажатия, и сообщение что запущено внешнее приложение Х... А при завешении этой Х.. - раздисаблить и убрать сообщение |
| Нет у меня такого на хХарборе. Dima Спасибо !
|
|
|
|
| |
Пост N: 1207
Зарегистрирован: 20.02.11
|
|
Отправлено: 03.03.18 15:09. Заголовок: Andrey пишет: Нет у..
Andrey пишет: цитата: | Нет у меня такого на хХарборе |
| Не верю (с). Но раз нет, так нет и искать не будем среди множества вариантов.
|
|
|
|
| |
Пост N: 6744
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.03.18 15:22. Заголовок: Haz пишет: Не верю ..
|
|
|
|
| |
Пост N: 6745
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.03.18 16:20. Заголовок: Hbnf :sm38: ..
Hbnf для иксов Libnf
|
|
|
|
| |
Пост N: 6746
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.03.18 16:30. Заголовок: чего ж нет если есть..
чего ж нет если есть в xharbour\contrib\libnf\ontick.c
|
|
|
|
| |
Пост N: 6747
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.03.18 17:08. Заголовок: Попробуй портировать..
Попробуй портировать из Harbour Сырец Скрытый текст THREAD STATIC t_bOnTick THREAD STATIC t_nTickInterval := 0 THREAD STATIC t_nLastCheck := 0 THREAD STATIC t_hIdle STATIC PROCEDURE __ft_OnTick() IF hb_MilliSeconds() >= ( t_nLastCheck + t_nTickInterval ) t_nLastCheck := hb_MilliSeconds() Eval( t_bOnTick ) ENDIF RETURN PROCEDURE ft_OnTick( bOnTick, nTickInterval ) /* Harbour extension: Harbour will also accept function pointers */ IF HB_ISEVALITEM( bOnTick ) t_bOnTick := bOnTick IF HB_ISNUMERIC( nTickInterval ) t_nTickInterval := ( 1 / 18.20648 ) * nTickInterval * 1000 ENDIF t_nLastCheck := hb_MilliSeconds() IF Empty( t_hIdle ) t_hIdle := hb_idleAdd( {|| __ft_OnTick() } ) ENDIF ELSE t_bOnTick := NIL t_nTickInterval := 0 IF ! Empty( t_hIdle ) hb_idleDel( t_hIdle ) t_hIdle := NIL ENDIF ENDIF RETURN
|
|
|
|
|
| |
Пост N: 6748
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.03.18 17:24. Заголовок: Andrey пишет: Я дум..
Andrey пишет: цитата: | Я думаю, что не пойдёт из за: |
| убери THREAD , думаю не смертельно
|
|
|
Новых ответов нет
, стр:
1
2
3
4
All
[см. все]
|
|