Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > DirectInput


Автор: Dexx 15.2.2006, 20:08
Мне нужно чтобы в игре написанной с использованием DirectInput эмулировалось
нажатие на клавиатуре кнопки.

Все перерыл не могу ни чего найти! smile smile

Автор: dpa 15.2.2006, 22:29
Вариант для извращенцев - прямая запись в буфер клавиатуры.
Примеров на просторах сети немеряно.

Автор: Romikgy 16.2.2006, 14:05
keybd_event

Автор: Dexx 16.2.2006, 18:19
keybd_event не работает для тех кто незнает!

И где конкретно в просторах сети прямая запись в буфер клавы!
Если в досе тоя и сам знаю!
А в винде!?

Автор: Snowy 16.2.2006, 18:25
А в винде нет буфера. Точнее нет очереди символов.
Она отслеживает не очередь кнопок, а изменение состояние клавиатуры.
GetKeyboardState.
А вот изменить это состояние тебе поможет SetKeyboardState.

Автор: Dexx 16.2.2006, 18:36
Я же говорю Win Api отдыхает!
Нужно что то низко уровневое!

Кто нит пробовал TVicHW32!
Если да поделитесь впечатсениями

Автор: Snowy 16.2.2006, 18:55
В DirectInput есть аналогичная функция по работе с клавиатурой.
Название не подскажу - нет под рукой SDK DirectX.
Но общий смысл тот же - буфер клавиш.

Автор: dpa 16.2.2006, 19:39
Цитата(Dexx @ 16.2.2006, 18:19 Найти цитируемый пост)
И где конкретно в просторах сети прямая запись в буфер клавы!

Там же, где Вы нашли TVicHW32.
Цитата(Dexx @ 16.2.2006, 18:19 Найти цитируемый пост)
Если в досе тоя и сам знаю!

Если Вы знаете как организовать это под DOS, то Вам не составит ни какого труда сделать то же самое и под win32.

На ум пришло еще одно решение:
как известно win посылает сообщения клавиатуры оконной процедуре того окна, которое в данный момент имеет фокус ввода.
Так вот, что нам мешает посылать сообщения вместо винды? Ничего, кроме самой винды. Дабы отфильтровать Наши сообщения от виндовых ставим hook и смотрим от кого пришло сообщение. Если от нашей программы - пропускаем. Если нет - блокируем.

Прошу не плеваться, если что-то здесь не так. Под винду я никогда не кодил, да и не собираюсь...
Но, на сколько я знаю архитектуру win, это реализуемо.
Поправьте меня, если я не прав.

Автор: Dexx 19.2.2006, 13:49
Не прав!
Я же говорю Win Api отдыхает!
Добавлено @ 13:54
И еще Dos это Dos, не вызаву же я в Win32 прерывание BIOS int 16! Как в досе.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)