Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2012, 14:52   #1
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
Вопрос Игра не хочет обрабатывать нажатия клавиш

Шлю нажатия клавиш в окно игры. И правильно все шлю вроде... и keydbevent юзаю и sendmessage, но игра их обрабатывать не хочет, вернее как не хочет... Игра Dota 2, сделана на движке CS:Source (golden-source) и, соответственно, там тоже есть консоль как в ксе. Так вот, как только я открываю консоль, то все нажатия нормально ловятся, а как только возвращаюсь в сам игровой процесс, то ничего не хочет обрабатывать. Там есть чат (при нажатии Enter), туда тоже норм обрабатываются нажатия.
Подкиньте плиз идею, как игра может проверять реально ли нажата клавиша на клаве и как ее еще можно обмануть? я wm_keydown/up, wm_char пробовал, а результат один и тот же =(
Pamparam вне форума Ответить с цитированием
Старый 06.02.2012, 18:39   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

возможно что игра применяет сразу два метода для работы с клавой.
один сообщения, а второе это Direct Input.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.02.2012, 20:25   #3
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

а как бороться?
Pamparam вне форума Ответить с цитированием
Старый 07.02.2012, 11:12   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Покажите часть кода, как вы отправляете нажатие, возможно там ошибка.


Небольшой пример:
Код:
//Если известен хендл окна то работай по сообщениям нажатия в самом окне
procedure SetKeyMessage(Handle: HWND; Key: DWORD);
begin
SendMessage(Handle, WM_KEYDOWN, Key, 0);
SendMessage(Handle, WM_KEYUP, Key, 0);
end;

//Эмуляция клавиши
procedure SetKey(Key: DWORD);
begin
  keybd_event(Key, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
  keybd_event(Key, 0, KEYEVENTF_EXTENDEDKEY, 0);
  keybd_event(Key, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
end;

//Использовать так

//Просто эмулировать
SetKey(Ord(A)); //SetKey(38);=код клавиши стрелки вверх
//или если хендел окна игры известен то 
SetKeyMessag(сюда хендел игры, Ord(A));
Более подробно посмотри эту тему
http://www.programmersforum.ru/showthread.php?t=180777

Последний раз редактировалось Aliens_wolfs; 07.02.2012 в 12:46.
Aliens_wolfs вне форума Ответить с цитированием
Старый 07.02.2012, 19:07   #5
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Типичная ошибка начинающих имитаторов клавиатурных нажатий - забывают устанавливать задержки между нажатиями, а также не понимают разницу между нажатием и отпусканием клавиши.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 08.02.2012, 02:34   #6
Pamparam
Форумчанин
 
Регистрация: 08.11.2009
Сообщений: 225
По умолчанию

писал выше, что в консоль и в чат в том же окне игры все ловится норм, а в самом игровом процессе ничего не просходит

Последний раз редактировалось Pamparam; 08.02.2012 в 02:42.
Pamparam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определение нажатия клавиш andrew_jr20 C# (си шарп) 2 12.12.2011 09:48
Эмуляция нажатия клавиш KamiMAN Общие вопросы Delphi 5 13.03.2011 06:24
Имитация нажатия клавиш Air Свободное общение 28 04.02.2010 12:38
Могут ли обрабатывать нажатия клавиш окна, отличные от активного? Gorlum Общие вопросы Delphi 14 27.10.2007 17:28