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

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

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

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

and3081: как же нет, когда все работает. #include blinker.ch и библу подключить contrib\hbblink\hbblink.hbc

Dima: and3081 пишет: как же нет, когда все работает Жесть , не знал Фактически там юзается Hb_run

Dima: and3081 пишет: А надо, чтобы программа не работала, пока не завершишь приложение EXECANDWAIT тебе нужен


petr707: and3081 пишет: start astr.exe @if errorlevel 44 obnov.bat Вряд ли теперь вторая строка батника (errorlevel) отработает, как ожидалось, поскольку не ждет завершения astr.exe

and3081: блин, почему у меня цитирование не работает :( to petr707 я же проверил, стаботало. Значит bat не закрылся. Щас еще раз проверю

and3081: Да, не работает, ну переделать не проблема

Sergy: and3081 пишет: UPDATE Если сделать swpruncmd("start приложение"), то лишнего окна нет. НО ! Тогда моя программа работает параллельно с открытым приложением. А надо, чтобы программа не работала, пока не завершишь приложение. Иначе клиент такого наворотит :) сделай RUN("start /w приложение") - будет ждать.

and3081: так тогда и окно лишнее открывается

Andrey: Функция с ожиданием: /////////////////////////////////////////////////////// FUNCTION WAITRUN( cRun ) Local hIn, hOut, nRet, hProc // "Launching process", cProc hProc := HB_OpenProcess( cRun , @hIn, @hOut, @hOut ) // "Reading output" // "Waiting for process termination" nRet := HB_ProcessValue( hProc ) FClose( hProc ) FClose( hIn ) FClose( hOut ) Return nRet

and3081: Экспериментирую EXECANDWAIT- для внешнего редактора работает. А для запуска "Explorer.exe файл.xml" - не ждет. И код возврата не 0, хотя сам explorer отрабатывает. Наверное, из-за того, что explorer передает файл другому приложению iexplore ? WAITRUN - тоже самое. Интересно, если возможен такой простой код, то зачем народ наворачивал на С EXECANDWAIT ? Кроме того в WAITRUN нет защиты от ошибки HB_OpenProcess( ). Если hProc вернул -1 (например не найден файл), то HB_ProcessValue( hProc ) упадет.

Andrey: and3081 пишет: Экспериментирую Вот еще так можно попробовать ! FUNCTION MAIN() LOCAL cFile SETCOLOR("15/1") CLEAR SCREEN cFile := CurDrive()+":"+DirName()+"\NOTEPAD.bat" ? "Запуск с ОЖИДАНИЕМ: EXECANDWAIT(", cFile,")" ? EXECANDWAIT(cFile) ? ? ? ? "Это сообщение не должно появится до завершения Notepad !" ? ? wait RETURN NIL ---------------notepad.BAT ------------------ @echo OFF echo . echo . echo =============== Вызов NOTEPAD.EXE ============================ echo . echo . notepad.exe echo . echo . echo =============== Вызов WinWord.EXE ============================ echo . echo . "C:\Program Files\Microsoft Office\OFFICE11\winword.exe" И еще попробуй функцию WAITRUNTERM() - поищи здесь на форуме....

and3081: Так это ничего не меняет. И без bat все запускается и ждет. Только explorer такой особенный. Придется смириться.

and3081: блииин, поставил клиентам вызов через start, ругается bad command... А что нужно ? Пути настроить ?

Dima: and3081 В Clipper я делал так swpruncmd(GetEnv("SYSTEMROOT")+"\system32\cmd.exe /c start " +TMMP+sysname+".htm") поковыряй ;)

and3081: нет, тут о другом. Для запуска программы, чтобы не было лишнего окна, мне посоветовали в батнике делать не astr.exe, а start astr.exe. У меня все работало, клиентам обновил батник- и часть клиентов пишут, что не запускается. Ужас

PSP: and3081 пишет: и часть клиентов пишут, что не запускается Ну подключись к ним TeamViewer-ом, посмотри.

and3081: причина оказалась в ярлыках. Пока ярлык на батник заново не создашь, он команду start не запускал.

Sergy: Использую для терминала GTWIN такую конструкцию: DeleteCloseButton(GetConsoleWindow()) где #pragma BEGINDUMP HB_FUNC( GETCONSOLEWINDOW ) { hb_retnl( (LONG)GetConsoleWindow( ) ) ; } HB_FUNC( DELETECLOSEBUTTON ) { DeleteMenu(GetSystemMenu( (HWND)hb_parnl( 1 ), FALSE), SC_CLOSE,MF_BYCOMMAND ) ; DrawMenuBar( (HWND)hb_parnl( 1 ) ); } #pragma ENDDUMP Под Win XP - вопросов не было. Убить приложение можно было только через диспетчер задач. С переходом на семерку - крестик окна серый, правой кнопкой мыши на заголовке окна - нет пункта "закрыть меню". НО!!! Не убирается пункт меню "закрыть окно" при нажатии в TaskBar правой кнопкой мыши... Где нужно подкрутить ?

azoo: Sergy, я использую команду: HB_gtInfo( 50, .F. ) Крестик не активен, пункт контекстного меню тоже не активен.

Sergy: azoo пишет: я использую команду: HB_gtInfo( 50, .F. ) Крестик не активен, пункт контекстного меню тоже не активен. #define HB_GTI_CLOSABLE 50 /* toggles ability to close window (supported by: GTWVT) */ Sergy пишет: Использую для терминала GTWIN такую конструкцию: DeleteCloseButton(GetConsoleWindow()) где Перешел уже на GTWVT. Разгребаю...



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