1

Тема: ControlSend, PostMessage не отрабатывают

Доброго времени суток.

Столкнулся с проблемой.
Есть необходимость в приложении (игра) нажимать определенные кнопки. В данном случае пробел (По задумке окон может быть несколько, возможно не активные).
В приложении есть чат, в него команды отправляются. Но, в самой игре, не отрабатывают, вот что пробовал, в разных вариациях:


;1
ControlSend, ahk_parent, {Space}, ahk_class %WinClass%
;2
ControlSend, , {Space}, ahk_class %WinClass%
;3
PostMessage, 0x100, 0x20,,, ahk_pid %WinPID%
PostMessage, 0x101, 0x20,,, ahk_pid %WinPID%
;4
PostMessage, 0x102, 0x20,,, ahk_pid %WinPID%

Возможно, само приложение блокирует Post/SendMessage.

Отсюда несколько вопросов:
1. Какие попытки предпринять с ControlSend и(или) PostMessage?
2. Какие возможны еще варианты реализации?

P.S. Просто Send {Space} также не отрабатывает. Хотя,


Click
Send, {RButton}
Send, {MButton}

Отрабатывают нормально.

2

Re: ControlSend, PostMessage не отрабатывают

Присмотритесь к SendPlay. И Post/SendMessage скорее всего не будут работать в играх.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

3

Re: ControlSend, PostMessage не отрабатывают

SendPlay вообще не отрабатывает, ни в чате, ни в самой игре.
SendInput отрабатывает только в чате.

И да, забыл сказать, стоит директива #InstallKeybdHook, если это, в данном случае, значимо.

И Post/SendMessage отрабатываются, но только в чате.

4

Re: ControlSend, PostMessage не отрабатывают

Возможно я смогу задать направление для мысли.
Методом тыка, удалось выяснить, что SendInput отрабатывает прямо так, как надо, то есть удовлетворяет всем потребностям.
Отсюда вопрос, есть какой-то аналог SendInput, только отправляемый в неактивное окно?

5

Re: ControlSend, PostMessage не отрабатывают

Не уверен, но возможно так:

SendMode Input
 ; SendMode InputThenPlay
ControlSend, ahk_parent, {Space}, ahk_class %WinClass%

SendMode

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

6 (изменено: notarius, 2013-06-11 13:47:54)

Re: ControlSend, PostMessage не отрабатывают

serzh82saratov пишет:

Не уверен, но возможно так:

SendMode Input
 ; SendMode InputThenPlay
ControlSend, ahk_parent, {Space}, ahk_class %WinClass%

SendMode

О, и правда, это может сработать, по крайней мере, это было бы логично. Не подумал об этом, спасибо, попоробую, отпишусь.

Попробовал. Опять 25, не отрабатывает.
пробовал и без указания ahk_parent

7

Re: ControlSend, PostMessage не отрабатывают

Во многих играх это неподдерживается, забудьте.
Если очень важно, ставьте на виртуалку.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

8 (изменено: notarius, 2013-06-11 18:24:41)

Re: ControlSend, PostMessage не отрабатывают

Да, важно.

Ставил на виртуалку. В игре реализована защита от запуска в виртуальной среде. Но это я обошел (патч на vmware антидетект), но после этого, проблема с видео (видеокарта не поддерживается, патч устанавливает видеокарту s3). В любом случае, как я понял, нигде толком не реализована поддержка 3d ускорения. Пробовал vmware, virtualbox.
Пробовал даже найти материалы по теме проброса видео с хоста. Но, ничего толком не нашел.
Пробовал также sandboxie. В самой песочнице игра, а также скрипт ahk (по идее они в одной виртуальной среде получаются). Но если сделать активным другое окно, то сама песочница блокирует эмулированные нажатия.

Где-то видел такую тему, можно добиться чего-то типа виртуальных мониторов. То есть один компьютер, но мониторов много и манипуляторы для каждого монитора свои. Но найти не могу.

Конечно, реализовать на уровне своих скриптов/программ все-таки приоритетнее, но вопрос изучаю уже довольно давно и ничего путного не нашел.

В общем в поиске любого решения.