Keycode() не работает в IDLE процедуре
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- ingasoftplus
- Ветеран
- Сообщения: 429
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 91 раз
- Поблагодарили: 5 раз
Keycode() не работает в IDLE процедуре
Keycode() не работает в IDLE процедуре - это коротко.
Подробнее. АБС, Clarion10.
Есть Main frame, из него стартует IDLE процедура (по умолчанию по 1 секунде вызывается).
В IDLE процедуре тупой код на проверку активности юзера, а именно
IF Keycode()...
Так вот, на главном фрейме автивность ловится (хотя и как-то странно, на мышь не реагирует), а вто если вызывается какая-то процедура, то из нее всегда получаю Keycode()=0
Не понятно, что происходит. (причем, похожий код в clarion6 работал).
Есть мысли, господа?
или решение, как поймать период неактивности юзера (т.е. он не жмет на клаву или мышью в данном приложении)...
спасибо
Подробнее. АБС, Clarion10.
Есть Main frame, из него стартует IDLE процедура (по умолчанию по 1 секунде вызывается).
В IDLE процедуре тупой код на проверку активности юзера, а именно
IF Keycode()...
Так вот, на главном фрейме автивность ловится (хотя и как-то странно, на мышь не реагирует), а вто если вызывается какая-то процедура, то из нее всегда получаю Keycode()=0
Не понятно, что происходит. (причем, похожий код в clarion6 работал).
Есть мысли, господа?
или решение, как поймать период неактивности юзера (т.е. он не жмет на клаву или мышью в данном приложении)...
спасибо
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Keycode() не работает в IDLE процедуре
Скорее всего, где-то срабатывает setkeycode(0). Нужно провести чистый эксперимент (на простом рукописном окне).
Я это делал в каждом окне. Это типа "Электронный киоск", фрейма нет.ingasoftplus писал(а): ↑15 Ноябрь 2019, 12:17 или решение, как поймать период неактивности юзера (т.е. он не жмет на клаву или мышью в данном приложении)...
В ABC Free нет что-то такого?
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Keycode() не работает в IDLE процедуре
Кстати, ещё момент. MouseX(), MouseY() работают в IDLE процедуре?
We are hard at work… for you.
- ingasoftplus
- Ветеран
- Сообщения: 429
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 91 раз
- Поблагодарили: 5 раз
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Keycode() не работает в IDLE процедуре
Может на самом фрейме в таймере поставить обработку mousex() и mousey()? Дёшево и сердито.
We are hard at work… for you.
- ingasoftplus
- Ветеран
- Сообщения: 429
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 91 раз
- Поблагодарили: 5 раз
Keycode() не работает в IDLE процедуре
ну а если юзер в формах с клавиатуры работает?
причем, в главном фрейме то идл процедура ловит keycode, а вот в окнах чилдах - перестает.
- ingasoftplus
- Ветеран
- Сообщения: 429
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 91 раз
- Поблагодарили: 5 раз
Keycode() не работает в IDLE процедуре
сейчас посмотрел - не нашел такого. может как-то особенно называется?
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Keycode() не работает в IDLE процедуре
ДОС что ли? Хочешь - не хочешь, всё равно мышкой дёрнешь. Ради интереса - MouseX и MouseY отрабатывают? Вот у меня в "Электронном Киоске" мыши нет. Пришлось в каждый экран прописывать код. Экранов мало, это нормально. Иначе писать шаблон.
We are hard at work… for you.
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2352
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 1 раз
- Поблагодарили: 19 раз
Keycode() не работает в IDLE процедуре
ingasoftplus писал(а): ↑15 Ноябрь 2019, 12:17Есть Main frame, из него стартует IDLE процедура (по умолчанию по 1 секунде вызывается).
В IDLE процедуре тупой код на проверку активности юзера, а именно
IF Keycode()...
Простите за тупой вопрос, но разве keycode() как-то должен реагировать?!
Он же отрабатывает в активном окне!
ИМХО: тут или субклассить или добавлять код для обработки в каждое активное окно
Это я только кажусь дураком! На самом деле я полный идиот!
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2352
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 1 раз
- Поблагодарили: 19 раз
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4688
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 37 раз
Keycode() не работает в IDLE процедуре
MouseX и mouseY должны срабатывать. В кассовой программе, где мышь отключается, я прописывал проверку активности в каждом окне, где это нужно. По таймеру. Но это очень специфичный случай.
C6/C11, ШВС, tps/btrieve.
Keycode() не работает в IDLE процедуре
Ну так в этом потоке проблем не будет. Ловить нажатие клавиш в другом потоке - тупик, никакой Idle не поможет.ingasoftplus писал(а): ↑15 Ноябрь 2019, 12:17Есть Main frame, из него стартует IDLE процедура (по умолчанию по 1 секунде вызывается).
Может посмотреть в строну хуков?
C10, Win10x64
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Keycode() не работает в IDLE процедуре
Да зачем? Если по-простому не выходит, есть традиционный путь - шаблон, который впишет нужный код во все окна.
We are hard at work… for you.