Автор | Сообщение |
|
| |
Пост N: 215
Зарегистрирован: 05.10.06
|
|
Отправлено: 28.06.19 17:25. Заголовок: отслеживание Alt-C
Можно ли как то логировать и отследить откуда прога вывалилась по Alt-C ?
|
|
|
Ответов - 11
[только новые]
|
|
|
| |
Пост N: 7053
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.06.19 20:47. Заголовок: Как вариант HB_GTI_I..
Как вариант HB_GTI_INKEYFILTER Поиск по форуму поможет
|
|
|
|
| |
Пост N: 216
Зарегистрирован: 05.10.06
|
|
Отправлено: 30.06.19 20:39. Заголовок: Dima пишет: Как вар..
Dima пишет: цитата: | Как вариант HB_GTI_INKEYFILTER |
| вероятно Alt-C имеет больший приоритет чем HB_GTI_INKEYFILTER, он прерывает выполнение раньше чем обрабатывается, оно и понятно... Однако что то в механизм его заложено, так как при закрытии на экране отображается откуда он вываливается, а вот как эту информацию можно сохранить ?
|
|
|
|
| |
Пост N: 7054
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.06.19 20:46. Заголовок: MIKHAIL пишет: Ctrl..
MIKHAIL пишет: MIKHAIL пишет: Так о какой комбинации речь ? Может есть смысл использовать установку Setcancel(.F.)
|
|
|
|
| |
Пост N: 217
Зарегистрирован: 05.10.06
|
|
Отправлено: 30.06.19 21:09. Заголовок: Dima пишет: Ctrl-C ..
Dima пишет: помутнение, конечно Alt-C ) Dima пишет: Так ведь Alt-C неспроста придумали, как перехватить событие нажатия клавиш если нет ожидания клавиатуры ?
|
|
|
|
| |
Пост N: 7055
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.06.19 21:11. Заголовок: MIKHAIL пишет: как ..
MIKHAIL пишет: цитата: | как перехватить событие нажатия клавиш если нет ожидания клавиатуры |
| Сделай ожидание но небольшое
|
|
|
|
| |
Пост N: 218
Зарегистрирован: 05.10.06
|
|
Отправлено: 30.06.19 21:18. Заголовок: Dima пишет: Сделай ..
Dima пишет: цитата: | Сделай ожидание но небольшое |
| Смысл в том что это не запланированное событие. Программа в какой то момент зависает, нужно отследить где и когда это происходит. Единственное событие которое можно вызвать и обработать это завершение программы через Alt-C или крестик. Соответственно что бы отследить где зависает, нужно вывести в лог текущее состояние программы на момент закрытия программы. Заранее понять где это происходит затруднительно...
|
|
|
|
| |
Пост N: 7056
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.06.19 22:41. Заголовок: Можно почитать как п..
Можно почитать как переназначить ALT+C в NG
|
|
|
|
| |
Пост N: 219
Зарегистрирован: 05.10.06
|
|
Отправлено: 01.07.19 06:09. Заголовок: Dima пишет: Можно п..
Dima пишет: цитата: | Можно почитать как переназначить ALT+C в NG |
| Так переназначение идет через SET KEY что в свою очередь работает при состоянии ожидания... Как перехватить событие клавиатуры без состояния ожидания ?
|
|
|
|
| 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 с нужным кодом.
|
|
|
|
| |
Пост N: 220
Зарегистрирован: 05.10.06
|
|
Отправлено: 02.07.19 10:20. Заголовок: alkresin пишет: Шта..
alkresin пишет: цитата: | Штатными средствами тут ничего не сделаешь. |
| А можно вставить на С функцию аналогичную в программу ? А нет ли возможности опрашивать клавиатуру по стандартному прерыванию и обрабатывать эти события ?
|
|
|
|
| moderator
|
Пост N: 1307
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.07.19 10:59. Заголовок: MIKHAIL пишет: А мо..
MIKHAIL пишет: цитата: | А можно вставить на С функцию аналогичную в программу ? |
| Вставить можно. Может даже и работать будет. Попробуйте. цитата: | А нет ли возможности опрашивать клавиатуру по стандартному прерыванию и обрабатывать эти события ? |
| Вы имеете ввиду - перехватывать WM_KEYDOWN? Наверное, можно - получить handle окна с помощью HB_GTI_WINHANDLE и потом установить процедру, перехватывающую события клавиатуры с помощью SetWindowsHookEx() - посмотрите, как это сделано в HwGUI.
|
|
|
|