![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 22.05.2009
Сообщений: 248
|
![]()
Для чего это надо, для программ, игр, где не предусмотрена настройка клавиш, и файла настройки нормального.
Приведу пример, например, есть игра "Glove on Fight". В ней клавиши для клавиатуры не настраиваются, а по умолчанию: Стрелки - для движения персонажа Z,X,C - удары. Требуется переделать W,A,S,D - для движения персонажа J,K,L - удары. Первое, что пришло в голову, это сделать по быстрому приложение на Дельфи, которое будет "активным всегда сверху и иметь в уголке просто маленький размер". Нажимая на нем нужные клавишы WASD, мы просто отсылаем сообщение с другими клавишами другому приложению, зная его хэндл. Проверяем: Код:
В чем ошибка, почему нормально срабатывает эмуляции нажатия клавиши для "Блокнота", Notepad++ и для других некотрых программ, а здесь не работает. Что подскажите? P.S. Или может уже есть готовые программы, в которых выбираешь нужный процесс из списка, и делаешь список нужных клавиш. Искал, но не нашел. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
читай про хуки.
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 22.05.2009
Сообщений: 248
|
![]()
Про хуки смотрел,
и такая конструкция, подсмотренная на одном из сайтов, вроде бы должна сработать, но опять же для "notepad" работает, а для данной проги нет. При нажатии на F11 - происходит нажатие "z". Код:
Может быть ошибка кроется в передаче клавиши, то есть она воспринимается как символ или как-то конвертируется внутри данной "японской проги"? Прилагаю скрины от MS Spy++ Messages при нажатии клавиши "z" в данной проге. Или что-то не учитываю? В целом, есть предположение? что может реакции нет из-за того, что операционная Windows 7 x64? Последний раз редактировалось Ecosasha; 23.12.2011 в 18:10. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Глобальный хук системы нужен. Там перехватываешь нажатие, смотришь куда адресовано нажатие, если в нужную программу, то делаешь замену.
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
![]()
Для глобального Хука могут быть проблемы со всеми клавишами, например остальные клавиши которые не эмулируются уже не будут работать их нужно будет прорписывать для эмуляции.
Вот вариант для захвата определенных клавиш Код:
Последний раз редактировалось Aliens_wolfs; 25.12.2011 в 15:23. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сделать чтобы программа не закрывалась при нажатии клавиш alt+f4 (Delphi) | zig1 | Помощь студентам | 1 | 12.12.2011 06:18 |
Клик в чужом приложении | SunnyDay | Общие вопросы Delphi | 5 | 31.10.2011 15:12 |
при нажатии цифр поменять значение буквенных клавиш местами(Assembler) | lexa123 | Помощь студентам | 1 | 16.12.2010 20:29 |
Open GL. при нажатии клавиш Left, Ridth, Up и Down точка должна двигаться по форме | Roof | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 27 | 16.11.2007 01:33 |