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


Пост N: 12
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 04.06.07 21:07. Заголовок: Как запретить закрытие терминального окна "крестом"?


Речь идет об терминальном окне с прогой на xHarbour.
Извините за ламерский вопрос. Возможно ли это? Если да, то как?
Спасибо.

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







Пост N: 107
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 12.08.13 15:51. Заголовок: Pasha, PSP - спасибо..


Pasha, PSP - спасибо, понял.

Запущу проект, потом обязательно займусь "красивостями" второго терминала.

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





Пост N: 108
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 12.08.13 16:38. Заголовок: PSP пишет: Посмотри..


PSP пишет:

 цитата:
Посмотри пример для терминала gtwvt: harbour\tests\wvtext.prg



Посмотрел. Офигенно.

НО: диспетчер задач срубает программу без единого звука.

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





Пост N: 248
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 30.08.13 17:30. Заголовок: Вопрос. Вроде все о..


Вопрос.

Вроде все отладил, но кое-где шаловливые руки юзеров "срубают" задачу несмотря на выключенный крестик. Я вижу это по увеличивающемуся значению переменной err_count.
Прихожу, спрашиваю - что да как: в ответ невнятное блеяние что "все зависло, ничего не работало, я вызвал диспетчер задач, снял ее, запустил и снова все заработало".

Как-бы грамотно запротоколировать процесс ? Что они там делают - то-ли винду вырубают не выйдя из программы, то-ли диспетчером срубают, то-ли терминальный сеанс завершают, то-ли вообще обходят какие-то программыне ограничения, введенные для младших сотрудников - х.е.з., но хотелось-бы разобраться...

EXIT PROCEDURE в таком случае точно не срабатывает. Очень помог-бы снимок экрана или хотя-бы стек вызовов процедур на крайний случай...

С какой стороны лучше подступиться и возможно ли это на Harbour ?

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

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




Пост N: 3495
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.08.13 17:55. Заголовок: Снимок экрана наверн..


Снимок экрана наверное не поможет а вот стек процедур да.

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



Пост 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



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





Пост N: 249
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 30.08.13 17:57. Заголовок: petr707 пишет: HB_G..


petr707 пишет:

 цитата:
HB_GTINFO( HB_GTI_CLOSABLE , .t. )



Это ведь с GTWIN не будет работать ? Нужно под GTWIN. Пока проблем от GTWVT для меня больше, чем преимуществ от его красивостей.

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



Пост N: 30
Зарегистрирован: 21.04.13
ссылка на сообщение  Отправлено: 30.08.13 18:08. Заголовок: завершение сеанса - предыдущий сеанс некорректно завершен


Можно сделать как в самом Windows
При запуске следующего сеанса проверяется неудаленный семафор
предыдущего сеанса, определяется что завершение было нерегламентным,
поднимаются логи и прочее.
Если сеанс свалился по ошибке из ERRORSYS - должен быть файл этого лога.
Если по внутренней ошибке - есть hb_out.log
Можно завести служебную таблицу статистики сеансов
регистировать в нее все сеансы - дата, время -входа, user, комп и дата+время завершения и тд.
и смтреть сколько свалов в каком месте.
Можно - по настройке - включить лог выполнения функций программы.
Можете даже писать это не свои логи, а в журнал приложений Windows(на любителя)


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




Пост 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

Проехали , придумал как.

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

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