Автор | Сообщение |
|
| |
Пост N: 125
Зарегистрирован: 08.07.06
|
|
Отправлено: 16.08.13 19:43. Заголовок: SOLVED!!! -> TRAPANYKEY() и KEYSEND() или запись/воспроизведение клавиатурных макросов
Практически со всем разобрался и восстановил функционал. Осталось одно и достаточно важное дело: автоматизация рутинных операций. В Clipper это происходило при помощи функций TRAPANYKEY/KEYSEND Первая при нажатии на любую клавишу в любом месте программы (включая GET/DBEDIT/ACHOICE/INKEY и тп) вызывает указанную мною функцию и передает ей код нажатой кнопки. Пользовательская функция тихо сидит и собирает эти коды в буфер - "записывает" нажатия клавиш юзером. В случае, если нужно "воспроизвести" записанные нажатия на кнопки, вызывается KEYSEND() с этим буфером в качестве параметра. Просто и логично. --------------------------------- Встал вопрос - чем и как заменить этот функционал? Без него меня разорвут на части - делать множество рутинных операций без клавиатурных макросов чокнешься...
|
|
|
Новых ответов нет
, стр:
1
2
3
All
[см. все]
|
|
|
| |
Пост N: 3
Зарегистрирован: 24.09.13
|
|
Отправлено: 25.09.13 13:32. Заголовок: Да в том-то и пробле..
Да в том-то и проблема, что возвращается и зацикливается. Нужно после подстановки клавиш (там еще не просто замена клавиш, а "вставка" еще одного нажатия) временно обработчик отключать, отдать управление в вышестоящую процедуру, а потом вернуть на место. (я чужой проект переношу, а там разработчик понимал толк в извращениях, хехе)
|
|
|
|
| |
Пост N: 308
Зарегистрирован: 08.07.06
|
|
Отправлено: 25.09.13 14:35. Заголовок: Если нужна помощь - ..
Если нужна помощь - есть смысл привести пример кода. У меня тоже, как оказалось, был "толк в извращениях", которые 10 лет назад написал на Clipper и забыл. А сейчас с переходом на Harbour пришлось вспоминать... хехе)
|
|
|
|
| |
Пост N: 4
Зарегистрирован: 24.09.13
|
|
Отправлено: 25.09.13 14:57. Заголовок: Все, кажись, выкрути..
Все, кажись, выкрутился )) В hb_KeyPut загонял нужные клавиши массивом, как выше и рекомендовалось, а перед его вызовом сделал hb_gtInfo(HB_GTI_INKEYFILTER, nil)
|
|
|
|
| |
Пост N: 4716
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.04.15 15:31. Заголовок: Хорошая штука hb_gtI..
Хорошая штука hb_gtInfo(HB_GTI_INKEYFILTER.... тоже переделал у себя вызовы NextKey(), там где проверяю активность юзера. Надеюсь на работу клавиатурного сканера это не скажется (постоянно работающий hb_gtInfo(HB_GTI_INKEYFILTER.....)
|
|
|
|
| |
Пост N: 5331
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.11.15 11:16. Заголовок: Иногда юзера стали ж..
Иногда юзера стали жаловаться что прога подвисает (ранее таких жалоб вроде не было) В программе живет вот такой код hb_gtInfo(HB_GTI_INKEYFILTER, {|nk| aadd(aDownKeys,nk)}) В отдельном потоке этот массив обнуляется (aDownKeys) при достижении его длины больше двух. Не может это обнуление вызвать зависон ? Гонял у себя прогу , на такой эффект попасть не смог.
|
|
|
Новых ответов нет
, стр:
1
2
3
All
[см. все]
|
|