Сейчас на форуме: ==DJ==[ZLO], Magister Yoda, Rio, Dart Raiden (+6 невидимых)

 eXeL@B —› Основной форум —› Помогите с эмуляцией нажатия клавиш в DirectX игру
Посл.ответ Сообщение

Ранг: 0.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 ноября 2004 05:42
· Личное сообщение · #1

Ситуация такая: нужно эмулировать нажатие на ctrl, alt и щелчок мыши в directX игрушке. С помощью виндовозных сообщений получается отследить нажатия и сэмулировать всё кроме выше указанных клавиш и ещё тех, которые в игрушке используются для движения. Хотел попробовать через DirectX, но оказалось, что там можно только отслеживать нажатия...
Посоветуйте!!!



Ранг: 0.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 05 ноября 2004 10:20
· Личное сообщение · #2

Ладно, если никто не знает...
Может, кто знает, как в той же directX игре программно нажать кнопочку Alt?



Ранг: 163.7 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 05 ноября 2004 14:09
· Личное сообщение · #3

Игрушка наверняка не использует сообщения.
Какой-нибудь IDirectInputDevice8::GetDeviceState.
Это реализуется через COM, посмотри есть ли DirectInputCreate(Ex).
Если GetDeviceState, то можно попробовать перехватывать вызов этого метода.
2й параметр (LPVOID lpvData) указывает на массив 256 байт, для альтов номера байтов такие: (это есть в dinput.h)

DIK_LMENU EQU 038h ; left Alt
DIK_RMENU EQU 0B8h ; right Alt

Если клавиша нажата, старший бит = 1.

Для мыши тоже GetDeviceState может использоваться, но там формат данных другой.



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 05 ноября 2004 14:36
· Личное сообщение · #4

Найди в нете программу Girder 3.29 (последняя бесплатная версия). Она тебе даст инфу типо:
Handle | Parent | Window name | Window class | Executable | Wparam | Lparam | Type

От этого и пляши.

Отрывок из моей будущей статьи:
К исследованию Girder не имеет отношения, я его использую для лентяйки. Лет пять назад, когда всякие пультики к компам не продавались, я сварганил себе приёмник инфракрасного сигнала (в сети полно таких схем). И с тех пор жить без этой штуки не могу. Любой сигнал с любого ИК устройства (в основном пульты) транслируется в циферки на COM порт. А Girder из этих циферок делает что угодно, например мышь и клаву имитирует. Но так умеют многие программы, а вот в чем girder по настоящему хорош, так это в посылки команд приложениям.

-----
Всем привет, я вернулся




Ранг: 0.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 05 ноября 2004 15:34
· Личное сообщение · #5

Спс, попробую, поищу.
Кстати, у мыши получается залепить клавишу с помощью апишной функции mouse_event


 eXeL@B —› Основной форум —› Помогите с эмуляцией нажатия клавиш в DirectX игру
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати