Форум » [x]Harbour » Закрытие Харб крестиком » Ответить

Закрытие Харб крестиком

and3081: Следует ли расчитывать, что при закрытии окна программы крестиком (харб 3.2.0) в любой момент не приведет к краху DBF ? Т.е.они все автоматом закроются ? А если в данный момент выполнен flock() и идут операции записи в БД, что произойдет ? Можно как-то блокировать из харба закрытие крестом на это время ? Или какое-нибудь предупреждение повесить ? харб 3,2,0 + BCC 55

Ответов - 41, стр: 1 2 3 All

Dima: http://clipper.borda.ru/?1-4-0-00000824-000-0-0-1377875287 Для начала можно просто заблочить крестик HB_gtInfo( HB_GTI_CLOSABLE, .F. )

and3081: спасибо, HB_gtInfo( HB_GTI_CLOSABLE, .F. ) работает Но возник другой вопрос, чтобы получить доступ и к другим функциям HB_gtInfo, я исследовал пример из TESTS wvtext. В программе должен быть PROCEDURE hb_GTSYS() REQUEST HB_GT_WVT_DEFAULT REQUEST HB_GT_WIN RETURN Но при этом возникает паразитное окно. Причем при запуске из FAR лишнего окна не возникает, по-видимому Far как-то по умному это обходит. А если пример wvtext запускать ярлыком- то 2 окна (Win 7 32 разр Харб 3.2.0 + BCC 55). Как с этим бороться ?

and3081: Частично проблема решается, если вместо REQUEST, как в примере wvtext, использовать опцию hbmk2 -gtwvt. Тогда при создании ярлыка непосредственно на exe работает нормально. НО мне надо exe запускать из bat-ника ! А при создании ярлыка на батник он получается "Тип объекта- Пакетный файл Windows". И тогда появлется лишнее "родительское" окно, а уже потом окно самой программы. Как решить проблему ???


Dima: and3081 пишет: использовать опцию hbmk2 -gtwvt попробуй hbmk2 -gtwvt -gui

petr707: and3081 пишет: НО мне надо exe запускать из bat-ника Если в батнике после вызова EXE не нужно ожидание завершения EXE, вызов EXE можно сделать через START тогда первое окно (батника) закроется, окно TEST.exe будет жить =====TEST.BAT=== rem TEST.EXE start TEST.EXE ... EXIT

and3081: попробовал совет petr на редакторе мультиедит, давно меня лишнее окно достает (в WinXP так не было) Не работает ни start "C:\Program Files\Multi-Edit Lite 2008\MeLite.exe -SR" exit ни start "C:\Program Files\Multi-Edit Lite 2008\MeLite.exe" -SR exit В смысле редактор даже не запускается. Ну это моей проблемы и не решило бы, просто попробовал. Опция -gui к видимым результатам не привела. А батник у меня используется для обновления, т.е. замены exe-шника. т.е. X.BAT: astr.exe @if errorlevel 44 obnov.bat Т.е.программа создает obnov.bat и выходит с возвратом errorlevel=44. А как еще заменить exe-шник, не выйдя из него? Т.е. и батник не завершить до выхода из проги. От батника не отказаться, замкнутый круг. Есть идеи ?

Dima: start "твой заголовок" "C:\Program Files\FlashFXP\FlashFXP.exe" или start /b "твой заголовок" "C:\Program Files\FlashFXP\FlashFXP.exe"

and3081: ну с мультиедитом разобрался, оказывается первые кавычки у start - это заголовок окна. Работает: start "1" "C:\Program Files\Multi-Edit Lite 2008\MeLite.exe" -SR exit а по основной проблеме- как из проги запустить батник, но чтобы прога при этом завершилась ? Чтобы ее можно было перезаписать ?

Dima: мне кажется что до запуска проги из батника нужно средствами языка батника проверить обновление и если оно есть менять EXE и после этого его запускать. то есть прогу всегда запускать через батник.

Dima: можно еще тему полистать http://clipper.borda.ru/?1-4-0-00000741-000-0-0-1335519340

and3081: Точно ! Будем кроить

Andrey: and3081 пишет: А как еще заменить exe-шник, не выйдя из него? Стандартными средствами НИКАК !

petr707: Andrey пишет: Стандартными средствами НИКАК ! Прошу попробовать Можно в отдельном окне, например по <Shift+Enter> из под Far В контексте пользователя - отлично меняется ИМЯ исполняемого файла, освобождая основное имя для размещения нового файла. Выполняемая задача НЕ ВИДИТ замены имени исполняемого файла hbmk2.exe test.prg -lhbct ========test.prg===== proc main ? exename() Inkey(100) hb_run("rename test.exe test_old.exe") ? exename() Inkey(100) hb_run("dir >a.txt") Inkey(100) ? filestr("a.txt") return

Dima: petr707 Интересный подход По ходу в Clipper можно было даже писать в запущенный EXE , с Harbour такой фокус не проходит Имею в виду fopen(exename(),2) (fseek(),fwrite(),fclose())

Sergy: А нужно-ли запускать обновление прямо во время работы задачи ? У меня происходит все при автозагрузке. Подключаются сетевые диски, проверяется версия, если есть различие - обновление. Юзеры работают днем, программа обновляется в основном, ночью. В редких случаях - можно вывести окно с требованием завершить работу и запустить update.bat ярлыком автозагрузки. Версии работающих программ видны - при необходимости самыми упертыми админ занимается лично.

Andrey: Sergy пишет: при необходимости самыми упертыми админ занимается лично. +1 и какие такие упертые ?

Andrey: Dima пишет: с Harbour такой фокус не проходит Имею в виду fopen(exename(),2) (fseek(),fwrite(),fclose()) Проходит. Берешь, делаешь в своей программе RENAME("test.exe","test_old.exe") а уж потом fopen("test.exe",2) (fseek(),fwrite(),fclose())

Dima: Andrey пишет: а уж потом fopen("test.exe",2) (fseek(),fwrite(),fclose()) скорее уж так ;) fopen("test_old.exe",2)

and3081: с этим решилось, даже переделывать обновление не пришлось, только добавил start и тот же батник и так отработал: start astr.exe @if errorlevel 44 obnov.bat Теперь другая проблема обнаружилась. Раньше (без gtwvt) вызов внешнего приложения, например, explorer, сразу открывало его в новом окне. swpruncmd() А теперь тоже открывается лишнее окно с заголовком C:\windows\system 32\cmd.exe. А поверх него окно с приложением (блокнот,explorer и т.п.). Отказываться от swpruncmd() ? UPDATE Если сделать swpruncmd("start приложение"), то лишнего окна нет. НО ! Тогда моя программа работает параллельно с открытым приложением. А надо, чтобы программа не работала, пока не завершишь приложение. Иначе клиент такого наворотит :)

Dima: and3081 пишет: swpruncmd() В Harbour её нет. Смотри тему http://clipper.borda.ru/?1-4-0-00000327-000-0-0-1365089161 я бы советовал (если нужно ждать окончания работы запущенного приложения) EXECANDWAIT если ждать не нужно hb_processrun , WAPI_ShellExecute



полная версия страницы