| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > DirectInput |
| Автор: Dexx 15.2.2006, 20:08 |
| Мне нужно чтобы в игре написанной с использованием DirectInput эмулировалось нажатие на клавиатуре кнопки. Все перерыл не могу ни чего найти! |
| Автор: 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 |
| Там же, где Вы нашли TVicHW32. Если Вы знаете как организовать это под DOS, то Вам не составит ни какого труда сделать то же самое и под win32. На ум пришло еще одно решение: как известно win посылает сообщения клавиатуры оконной процедуре того окна, которое в данный момент имеет фокус ввода. Так вот, что нам мешает посылать сообщения вместо винды? Ничего, кроме самой винды. Дабы отфильтровать Наши сообщения от виндовых ставим hook и смотрим от кого пришло сообщение. Если от нашей программы - пропускаем. Если нет - блокируем. Прошу не плеваться, если что-то здесь не так. Под винду я никогда не кодил, да и не собираюсь... Но, на сколько я знаю архитектуру win, это реализуемо. Поправьте меня, если я не прав. |
| Автор: Dexx 19.2.2006, 13:49 |
| Не прав! Я же говорю Win Api отдыхает! Добавлено @ 13:54 И еще Dos это Dos, не вызаву же я в Win32 прерывание BIOS int 16! Как в досе. |