Программное нажатие клавиш клавиатуры в игре!
Ну скажем клавишу w (вперед) чтоб персонаж сам бежал!
SendMessage
postmessage
SendInput
keybd_event
Вообще работают, но не в игре (хотя в консольке работает)!
Вообще SendInput должен работать. Но если что искать в сторону DirectX Input.
memset(inp,0,sizeof(inp));
inp[0].type = INPUT_KEYBOARD;
inp[0].ki.wVk = 0;
inp[0].ki.wScan = 'a';
inp[0].ki.dwFlags = KEYEVENTF_SCANCODE;
inp[0].ki.time = 0;
inp[0].ki.dwExtraInfo = 0;
inp[1].type = INPUT_KEYBOARD;
inp[1].ki.wVk = 0;
inp[1].ki.wScan = 'a';
inp[1].ki.dwFlags = KEYEVENTF_KEYUP | KEYEVENTF_SCANCODE;
inp[1].ki.time = 0;
inp[1].ki.dwExtraInfo = 0;
//Посылаем имитацию нажатий в систему
SendInput(2,inp,sizeof(INPUT));
или
INPUT inp[2];
memset(inp,0,sizeof(inp));
//Нажимаем
inp[0].type=INPUT_KEYBOARD;
inp[0].ki.wVk=87;
// Отжимаем
inp[1].type=INPUT_KEYBOARD;
inp[1].ki.wVk=87;
inp[1].ki.dwFlags=KEYEVENTF_KEYUP;
//Посылаем имитацию нажатий в систему
SendInput(2,inp,sizeof(INPUT));
Может что не правильно?
Без игры это работает?
В принципе keybd_event и postmessage работают также (винда и консоль).
погугли много народу пытается обмануть игрушки:)
Попробуй использовать уже готовую программу вот из её описания:
Why do Hotstrings, Send, and Click have no effect in certain games?
Some games use DirectInput exclusively. As a side-effect, they might ignore all simulated keystrokes and mouse clicks. To work around this, try one of the following (or a combination):
* Use SendPlay via: 1) the SendPlay command; 2) using SendMode Play; and/or 3) the hotstring option SP.
* Increase SetKeyDelay. For example:
SetKeyDelay, 0, 50
SetKeyDelay, 0, 50, Play
* Try ControlSend, which might work in cases where the other Send modes fail.
Первое моё мнение: Послав два месежа подряд (keydown,keyup) ты можешь даже и не заметить что персонаж в игре передвинулся (проверяй на переключении оружия например (1,2,3,...,q...) или открытия консоли ), второе: cs может использовать не обработку оконных сообщений а DirectInput например (что вероятнее всего)
Попробуй использовать уже готовую программу вот из её описания:
Цитата:
Why do Hotstrings, Send, and Click have no effect in certain games?
Some games use DirectInput exclusively. As a side-effect, they might ignore all simulated keystrokes and mouse clicks. To work around this, try one of the following (or a combination):
* Use SendPlay via: 1) the SendPlay command; 2) using SendMode Play; and/or 3) the hotstring option SP.
* Increase SetKeyDelay. For example:
SetKeyDelay, 0, 50
SetKeyDelay, 0, 50, Play
* Try ControlSend, which might work in cases where the other Send modes fail.