|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.05.2017, 16:17 | #1 |
Пользователь
Регистрация: 29.05.2017
Сообщений: 11
|
Нужен другой способ или ошибка? ( Нужно В игру под директ3Д послать нажатие клавиши или мышки)
Добрый день! У меня такая трабла возникла. Нужно В игру под директ3Д послать нажатие клавиши или мышки.
Вот код и варианты кодов. по таймеру... Handle := GetForegroundWindow(); PostMessage(Handle, WM_IME_KEYDOWN,VK_ESCAPE,0 ); или keybd_event(VK_ESCAPE, 0, 0, 0); keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0); или SendMessage(Handle, MOUSEEVENTF_LEFTDOWN, 0, 0); SendMessage(Handle, MOUSEEVENTF_LEFTUP, 0, 0); В другие приложения, текстовики и тд и тп - послать команды могу... А в игру не могу - ноль внимания, фунт презрения. В чем может быть проблема? Или может кто то предложит рабочий вариант... Большое ПАСИБА! ) П.с. гуглил, гуглил... гуглил... Уже мозг сломал. |
29.05.2017, 16:27 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Некоторым между keybd_event нужна задержка (очееень маленькая, хоть какая-то), некоторые через директинпут получают все... ну а особо продвинутые используют raw input, а на отдельные сообщения кладут болт.
|
29.05.2017, 16:39 | #3 |
Пользователь
Регистрация: 29.05.2017
Сообщений: 11
|
Вот такая штука тоже не прошла
var d:tINPUT; g:tagmouseinput; pt:Tpoint; begin getcursorpos(pt); g.dx:=pt.x; g.dy:=pt.y; g.mouseData:=0; g.dwFlags:=MOUSEEVENTF_LEFTDOWN ; g.time:=0; d.mi:=g; d.Itype:=INPUT_MOUSE; SendInput(1,d,sizeof(d)); П.с. Задержку между нажатием и отжатием клавиш тоже делал, и Application.ProcessMessages; тоже вставлял... А вот про рав инпут не слышал - можно подробнее? |
29.05.2017, 16:42 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Наслаждайтесь https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx . Кстати это рекомендованный способ ввода, особенно для игр.
P.S. Для сендинпута стоит почитать о UIPI Последний раз редактировалось p51x; 29.05.2017 в 16:47. |
29.05.2017, 17:05 | #5 |
Пользователь
Регистрация: 29.05.2017
Сообщений: 11
|
я наверно слишком наглый, но можно попросить простенький пример, как через равинпут нажать правую кнопку мыши?
|
29.05.2017, 17:24 | #6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Вы это и пытаетесь делать сендинпутом. только надо внимательно прочитать, что там и как шлется.
Вам бы сначала определиться с спосбом ввода и проблемой. Может вы просто не по тем координатам кликаете. |
29.05.2017, 17:35 | #7 |
Пользователь
Регистрация: 29.05.2017
Сообщений: 11
|
Способы ввода все перепробовал)
mouse_event(MOUSEEVENTF_RIGHTDOWN,6 00,600,0,0); //- нажать левой кнопки Sleep(2000); mouse_event(MOUSEEVENTF_RIGHTUP,600 ,600,0,0); //- отпустить левую кнопку Координаты выставляются монитора, значения не имеют, мне нужно зажать на некоторое время правую кнопку мыши (на пару секунд) после отпустить. Работает везде, кроме игры. В винде - без запуска игры - выскакивает менюшка(все как надо). А в игре ничего нет, никакого толку, даже пытался отослать кнопку Эскейпа, - тоже самое проку нет. В чем проблема, понять сам не могу. Может в игре стоит какая то защита от эмуляции клавиш, такое возможно? |
29.05.2017, 17:48 | #8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Я ж вам уже сказал
1. UIPI 2. все эти способы разные и могут обрабатываться или не обрабатываться 3. игра может проверять координаты клика и если за пределами своего окна плевать и т.д. |
30.05.2017, 02:59 | #9 |
Пользователь
Регистрация: 29.05.2017
Сообщений: 11
|
Проблема так и не решилась ( П.с. координаты при фулл скрине 100% попадают в цель.
|
03.06.2017, 21:07 | #10 |
Пользователь
Регистрация: 29.05.2017
Сообщений: 11
|
До меня доперло!!! В чем проблема! steam сам перехватывает эмуляцию нажатий клавиш и Блокирует ее! И как это обойти??
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужен или код, или блок схема, или просто обьяснение. | shewlett | Помощь студентам | 1 | 03.06.2015 16:34 |
Есть ли компонент или способ отображать кликабельные ссылки в Memo или RichEdit? | FleXik | Общие вопросы Delphi | 14 | 10.04.2014 04:54 |
Послать нажатие клавиши в Mozilla FireFox | FaTaL | Общие вопросы Delphi | 14 | 04.02.2014 16:37 |
Послать нажатие клавиши + хуки | c0mp | Win Api | 7 | 13.08.2012 10:26 |
Послать нажатие кнопки в игру (Warcraft) | TwiX | Общие вопросы Delphi | 6 | 20.05.2010 17:46 |