Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Нажатие клавиш в Counter Strike (https://forum.antichat.xyz/showthread.php?t=112141)

sn0w 20.03.2009 17:09

Нажатие клавиш в Counter Strike
 
всем привет. вот задачка - посылать нажатие клавиш в игру. а именно - например пробела чтоб прыгать.

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

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 %)


Время: 21:15