code_24404.txt
Этот топик читают: Гость
Ответов: 3349
Рейтинг: 233
|
|||
карма: 1 |
| ||
файлы: 1 | code_24404.txt [2.1KB] [622] | ||
Голосовали: | hitman249 |
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 8 раз(а), последний 2021-06-21 04:15:41 |
|||
карма: 0 |
|
Ответов: 3349
Рейтинг: 233
|
|||
г. dendy писал(а): можно без InlineCodeНельзя. Твоя схема производит опрос клавиш, а мой IC устанавливает низкоуровневый хук на клавиатуру. г. dendy писал(а): нажатие (одиночное) и отпусканиеКак раз там есть и нажатие и отпускание. ------------ Дoбавленo в 06.39:
|
|||
карма: 1 |
| ||
Голосовали: | Netspirit, 1nd1g0, andrestudio, filyaxxxcom |
Ответов: 4628
Рейтинг: 749
|
|||
А каким образом это работает? Ведь MSDN везде подчеркивает, что глобальные хуки должны ставиться в DLL?
------------ Дoбавленo в 14.38: Видимо, потому, что WH_KEYBOARD_LL всегда глобальная ------------ Дoбавленo в 14.53: И ещё интересно было бы поработать с RawInput. Думаю, например, было бы возможно избегать эмуляции нажатий на клавиатуру в окно своей программы (при выдаче всяких NAG-скринов, проверке ввода серийника и т.п.), а также получать ввод от различных HID-устройств. |
|||
карма: 26 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Netspirit писал(а): ввод от различных HID-устройствNetspirit, глобальное обсуждение на тему, тогда же в ЛС с Nesco мы говорили и про RawInput. Но не хватило времени и желания. ------------ Дoбавленo в 15.20: Netspirit писал(а): А каким образом это работает? Ведь MSDN везде подчеркивает, что глобальные хуки должны ставиться в DLL?Трюк заключается в том, что Callback для функций вида *_LL выполняется в контексте приложения, поставившего хук и работает через очередь сообщений (соответственно, в потоке должен быть прописан обработчик). ------------ Дoбавленo в 15.24: Netspirit писал(а): И ещё интересно было бы поработать с RawInput.Равно как и с DirectInput. Кстати, сам Microsoft рекомендует использовать RawInput вместо LL хуков (обе технологии работают на сообщениях, хотя RI экзотичнее, но значительно мощнее в умелых руках, кроме того, есть простейший метод случайноспециально заблокировать LL хуки в системе со всеми вытекающими). Лично меня очень интересует раздельный опрос нескольких однотипных средств ввода (две мышки, две клавиатуры на одном ПК без доп. фильтр. драйверов) |
|||
карма: 1 |
|
Ответов: 5227
Рейтинг: 587
|
|||
1nd1g0 писал(а): интересует раздельный опрос нескольких однотипных средств ввода (две мышки, две клавиатуры на одном ПК без доп. фильтр. драйверов |
|||
карма: 4 |
|
Ответов: 3349
Рейтинг: 233
|
|||
С RI не разу не работал, посмотрю может когда нибудь.
|
|||
карма: 1 |
|
Ответов: 3889
Рейтинг: 362
|
|||
andrestudio писал(а): два рабочих стола с мониторамиЭто уже пройденый этап, проверенный на практике (работали вдвоём, даже играть могли иногда), сейчас не редкость компьютер с двумя видеокартами, иили с двумя видеовыходами, доп. клавиатуры и мышки - вообще без проблем. Но требовало спец. драйверов-фильтров ввода (с новыми 64хбитными ОС это не есть хорошо дружить). Потом на тонких клиентов перешли, до 30 человек на одном ПК) Тут ориентированность именно на одного человека там, где недопустимы блокировки клавиш из-за ограничений разводки клавиатур (ограничение на кол-во одновременных клавиш). Нужно много где, музыка, игра вдвоём, альтернативные интерфейсы (доп. клавиатура на внешних устройствах, например, для набора личного кода на проходной). Джойстики и т.п. само собой, тоже через RI при желании) Ivann писал(а): С RI не разу не работал, посмотрю может когда нибудь.Страна не забудет своих героев) |
|||
карма: 1 |
|
Ответов: 3349
Рейтинг: 233
|
|||
Первый эксперимент с RawInput.Перечисляет устройства
|
|||
карма: 1 |
| ||
файлы: 1 | code_24419.txt [4KB] [545] | ||
Голосовали: | 1nd1g0 |
Ответов: 3889
Рейтинг: 362
|
|||
Ivann, хорошее начало, осталось научить программу оптимальному выбору среди дубликатов ,(например, PS2 тачпад и клавиатура на ноутбуке, по крайней мере, под NT6.x, прописались по двум путям, как корневые, и как ACPI. А складная USB клавиатура оказалась основанной на чипе, который заявляет себя как два устройства - клавиатура и нечто дополнительное)
Пример того, что число виртуальных устройств ввода может превышать число реальных Кстати, функция GetRawInputDeviceList - один из лучших примеров индийского кода, порождённого в Microsoft. При её использовании приходится помнить о некоторых подводных камнях, описанных тут. Теперь понятно, почему практическое использование RI встречается достаточно редко - надо быть либо очень внимательным и дотошным человеком, либо ... индусом. |
|||
карма: 1 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
1nd1g0 писал(а): Теперь понятно, почему практическое использование RI встречается достаточно редко - надо быть либо очень внимательным и дотошным человеком, либо ... индусом.Либо, тот кто писал этот API -- индус |
|||
карма: 22 |
|
Ответов: 5227
Рейтинг: 587
|
|||
[flood]кстати индусы одни из самых продвинутых программистов считаются [/flood]
|
|||
карма: 4 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
[flood]
andrestudio писал(а): кстати индусы одни из самых продвинутых программистов считаютсяВот только не в области опимизации кодов. Хотя, наш Hiasm на стандартном пакете такой код лепит, что любой индус позавидует [/flood] |
|||
карма: 22 |
|
Ответов: 3349
Рейтинг: 233
|
|||
Демонстрация работы RawInput в перехвате нажатий клавиш Собственно схема с IC code_24434.txt И служебный юнит RInput(Поместить в папку %HiAsm%ElementsDelphiCode) c именем RInput.pas code_24435.txt |
|||
карма: 1 |
| ||
файлы: 2 | code_24434.txt [2.6KB] [509], code_24435.txt [8.7KB] [1091] | ||
Голосовали: | 1nd1g0, ser_davkin, login |
Ответов: 3889
Рейтинг: 362
|
|||
Ivann, молодец, пока не могу проверить, будет возможность, погоняю под WOW64 на двух клавиатурах, отличать нажатия на первой и второй. То же с мышками и джойстиками всякими.
|
|||
карма: 1 |
|