Автор | Сообщение |
|
| постоянный участник
|
Пост N: 12
Зарегистрирован: 27.01.07
|
|
Отправлено: 04.06.07 21:07. Заголовок: Как запретить закрытие терминального окна "крестом"?
Речь идет об терминальном окне с прогой на xHarbour. Извините за ламерский вопрос. Возможно ли это? Если да, то как? Спасибо.
|
|
|
Ответов - 28
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 107
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 15:51. Заголовок: Pasha, PSP - спасибо..
Pasha, PSP - спасибо, понял. Запущу проект, потом обязательно займусь "красивостями" второго терминала.
|
|
|
|
| |
Пост N: 108
Зарегистрирован: 08.07.06
|
|
Отправлено: 12.08.13 16:38. Заголовок: PSP пишет: Посмотри..
PSP пишет: цитата: | Посмотри пример для терминала gtwvt: harbour\tests\wvtext.prg |
| Посмотрел. Офигенно. НО: диспетчер задач срубает программу без единого звука.
|
|
|
|
| |
Пост N: 248
Зарегистрирован: 08.07.06
|
|
Отправлено: 30.08.13 17:30. Заголовок: Вопрос. Вроде все о..
Вопрос. Вроде все отладил, но кое-где шаловливые руки юзеров "срубают" задачу несмотря на выключенный крестик. Я вижу это по увеличивающемуся значению переменной err_count. Прихожу, спрашиваю - что да как: в ответ невнятное блеяние что "все зависло, ничего не работало, я вызвал диспетчер задач, снял ее, запустил и снова все заработало". Как-бы грамотно запротоколировать процесс ? Что они там делают - то-ли винду вырубают не выйдя из программы, то-ли диспетчером срубают, то-ли терминальный сеанс завершают, то-ли вообще обходят какие-то программыне ограничения, введенные для младших сотрудников - х.е.з., но хотелось-бы разобраться... EXIT PROCEDURE в таком случае точно не срабатывает. Очень помог-бы снимок экрана или хотя-бы стек вызовов процедур на крайний случай... С какой стороны лучше подступиться и возможно ли это на Harbour ? Как первый вариант: маленькая программа-обертка(запускатель) для главной программы. Если выход из главной программы произошел без установки кода завершения, допустим, 55 - значит программа завершилась неудачно и нужно сохранить снимок экрана для разбора полетов. Может есть способ элегантнее? И я сомневаюсь, что он отработает в случае завершения работы винды или сеанса.
|
|
|
|
| |
Пост N: 3495
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.08.13 17:55. Заголовок: Снимок экрана наверн..
Снимок экрана наверное не поможет а вот стек процедур да.
|
|
|
|
| |
Пост N: 29
Зарегистрирован: 21.04.13
|
|
Отправлено: 30.08.13 17:55. Заголовок: Можно крестик не зап..
Можно крестик не запрещать, использовать под своим контролем что-то типа(см.ниже) WN_Notifier - можно вызывать и не при нажатии крестика, только задать nEvent(эмуляция) Коды возврата (0 или 1) нужно проверять, они разные для hb20 и hb30, h32 также разные коды для nEvent .. HB_GTINFO( HB_GTI_CLOSABLE , .t. ) HB_GtInfo( HB_GTI_NOTIFIERBLOCK, {|nEvent, ...| WN_Notifier( nEvent, ... ) } ) .... FUNCTION WN_Notifier( nEvent, ... ) Static n_GTE_CLOSE:=0// Номер вхождения .. DO CASE CASE nEvent == HB_GTE_SETFOCUS CASE nEvent == HB_GTE_CLOSE //HB_K_CLOSE n_GTE_CLOSE++ if n_GTE_CLOSE<=1// условие завершения - необязательное - можно требовать два нажатия на крестик и т.д. // завершение работы - здесь записать в лог, закрыть таблицы и прочее return 0 else n_GTE_CLOSE :=0 return 1 endif CASE nEvent == HB_GTE_RESIZED // обработка изменения размера окна OTHERWISE ENDCASE RETURN 0
|
|
|
|
| |
Пост N: 249
Зарегистрирован: 08.07.06
|
|
Отправлено: 30.08.13 17:57. Заголовок: petr707 пишет: HB_G..
petr707 пишет: цитата: | HB_GTINFO( HB_GTI_CLOSABLE , .t. ) |
| Это ведь с GTWIN не будет работать ? Нужно под GTWIN. Пока проблем от GTWVT для меня больше, чем преимуществ от его красивостей.
|
|
|
|
| |
Пост N: 30
Зарегистрирован: 21.04.13
|
|
Отправлено: 30.08.13 18:08. Заголовок: завершение сеанса - предыдущий сеанс некорректно завершен
Можно сделать как в самом Windows При запуске следующего сеанса проверяется неудаленный семафор предыдущего сеанса, определяется что завершение было нерегламентным, поднимаются логи и прочее. Если сеанс свалился по ошибке из ERRORSYS - должен быть файл этого лога. Если по внутренней ошибке - есть hb_out.log Можно завести служебную таблицу статистики сеансов регистировать в нее все сеансы - дата, время -входа, user, комп и дата+время завершения и тд. и смтреть сколько свалов в каком месте. Можно - по настройке - включить лог выполнения функций программы. Можете даже писать это не свои логи, а в журнал приложений Windows(на любителя)
|
|
|
|
| |
Пост N: 5690
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.05.16 17:31. Заголовок: petr707 пишет: HB_G..
petr707 пишет: цитата: | HB_GtInfo( HB_GTI_NOTIFIERBLOCK, {|nEvent, ...| WN_Notifier( nEvent, ... ) } ) |
| Как поймать событие в функции WN_Notifier что окно свернули ? PS Терминал Gtwvt/GtWvg Проехали , придумал как.
|
|
|
Ответов - 28
, стр:
1
2
All
[только новые]
|
|