PDA

Просмотр полной версии : Нажатие клавиш в Counter Strike


sn0w
20.03.2009, 17:09
всем привет. вот задачка - посылать нажатие клавиш в игру. а именно - например пробела чтоб прыгать.

пробовал такие методы:

1)
GetKeyboardState(keyb);
keyb[VK_SPACE] |= 128;
SetKeyboardState(keyb);

2) через SendInput

3) keybd_event

работает и в менюхах и в консоли, но в самой игре - реакция 0. =(

сталкивался кто?
(может директинпут... но с этим сомнения есть)

slesh
20.03.2009, 18:12
Ну тогда попробуй поглядеть все окна которые принадлежат процессу и каждому окну шли WM_KEYDOWN / WM_KEYUP

sn0w
20.03.2009, 18:23
тоже делал через PostMessage.
тут не проходит тк юзается dinput который читает напрямую.

тогда суть немного меняется - как изменить kbdclass из ддк чтобы можно было "вписывать" нажатие программно =)

slesh
20.03.2009, 18:48
Тогда тебе нужно через IoCreateDevice и IoAttachDevice аттачиться к \\Device\\KeyboardClass0 и там уже фильтровать что и откого идет чтобы глянуть как пашет, а дальше самому работать уже с этим устройством для посылки нажания

А вообще обработка нажатия на кнопку
в \\Device\\KeyboardClass0 идет через IRP_MJ_READ
Где буфер - это
typedef struct _KEYBOARD_INPUT_DATA {
USHORT UnitId;
USHORT MakeCode;
USHORT Flags;
USHORT Reserved;
ULONG ExtraInformation;
} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;

Так что как вариант можно поробовать самому делать подобного типа запросы к драйверу.

rushter
20.03.2009, 19:35
скачай сорцы читов и посмотри :)

sn0w
20.03.2009, 19:50
блин я немного забыл что когда контру сворачиваешь, управление переходит к рабочему столу, чтож тогда буду тренироваться с dinput %)