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





Пост N: 215
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 28.06.19 17:25. Заголовок: отслеживание Alt-C


Можно ли как то логировать и отследить откуда прога вывалилась по Alt-C ?

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


администратор




Пост N: 7053
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.19 20:47. Заголовок: Как вариант HB_GTI_I..


Как вариант HB_GTI_INKEYFILTER
Поиск по форуму поможет

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





Пост N: 216
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 30.06.19 20:39. Заголовок: Dima пишет: Как вар..


Dima пишет:

 цитата:
Как вариант HB_GTI_INKEYFILTER


вероятно Alt-C имеет больший приоритет чем HB_GTI_INKEYFILTER, он прерывает выполнение раньше чем обрабатывается, оно и понятно...
Однако что то в механизм его заложено, так как при закрытии на экране отображается откуда он вываливается, а вот как эту информацию можно сохранить ?

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




Пост N: 7054
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.19 20:46. Заголовок: MIKHAIL пишет: Ctrl..


MIKHAIL пишет:

 цитата:
Ctrl-C


MIKHAIL пишет:

 цитата:
вероятно Alt-C


Так о какой комбинации речь ?
Может есть смысл использовать установку Setcancel(.F.)

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





Пост N: 217
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 30.06.19 21:09. Заголовок: Dima пишет: Ctrl-C ..


Dima пишет:

 цитата:
Ctrl-C


помутнение, конечно Alt-C )

Dima пишет:

 цитата:
Setcancel(.F.)


Так ведь Alt-C неспроста придумали, как перехватить событие нажатия клавиш если нет ожидания клавиатуры ?

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




Пост N: 7055
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.19 21:11. Заголовок: MIKHAIL пишет: как ..


MIKHAIL пишет:

 цитата:
как перехватить событие нажатия клавиш если нет ожидания клавиатуры


Сделай ожидание но небольшое

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





Пост N: 218
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 30.06.19 21:18. Заголовок: Dima пишет: Сделай ..


Dima пишет:

 цитата:
Сделай ожидание но небольшое


Смысл в том что это не запланированное событие. Программа в какой то момент зависает, нужно отследить где и когда это происходит. Единственное событие которое можно вызвать и обработать это завершение программы через Alt-C или крестик. Соответственно что бы отследить где зависает, нужно вывести в лог текущее состояние программы на момент закрытия программы. Заранее понять где это происходит затруднительно...

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




Пост N: 7056
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.19 22:41. Заголовок: Можно почитать как п..


Можно почитать как переназначить ALT+C в NG

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





Пост N: 219
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 01.07.19 06:09. Заголовок: Dima пишет: Можно п..


Dima пишет:

 цитата:
Можно почитать как переназначить ALT+C в NG


Так переназначение идет через SET KEY что в свою очередь работает при состоянии ожидания... Как перехватить событие клавиатуры без состояния ожидания ?

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


Пост N: 1305
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.07.19 09:43. Заголовок: Штатными средствами ..


Штатными средствами тут ничего не сделаешь.
Если вы готовы пересобрать Harbour, то можно сделать вот что:
src/hvm.c, ф-я hb_vmRequestCancel() - закомментируйте строчку
s_fDoExitProc = HB_FALSE;
Как написано там в комментарии, она запрещает выполнение exit procedure для совместимости с Клиппером.
После этого пересоберите Harbour и поместите в свою программу exit procedure с нужным кодом.

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





Пост N: 220
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 02.07.19 10:20. Заголовок: alkresin пишет: Шта..


alkresin пишет:

 цитата:
Штатными средствами тут ничего не сделаешь.


А можно вставить на С функцию аналогичную в программу ?
А нет ли возможности опрашивать клавиатуру по стандартному прерыванию и обрабатывать эти события ?

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


Пост N: 1307
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.19 10:59. Заголовок: MIKHAIL пишет: А мо..


MIKHAIL пишет:

 цитата:
А можно вставить на С функцию аналогичную в программу ?


Вставить можно. Может даже и работать будет. Попробуйте.

 цитата:
А нет ли возможности опрашивать клавиатуру по стандартному прерыванию и обрабатывать эти события ?


Вы имеете ввиду - перехватывать WM_KEYDOWN? Наверное, можно - получить handle окна с помощью HB_GTI_WINHANDLE и потом установить процедру, перехватывающую события клавиатуры с помощью SetWindowsHookEx() - посмотрите, как это сделано в HwGUI.

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

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