Page 1 of 1

Не пойму,почему скрипт на работает в свернутом окне

Posted: 26 May 2018, 06:10
by gloomyr666
Есть код скрипта, от которого жду нажатие пробела в свернутом (ну или хотя бы неактивном окне) игры (Овервотч).
НО работает скрипт только в активном окне. Как это исправить,товарищи?=/

Code: Select all

SetTitleMatchMode, 1            ; мы будем искать окно, название которого начинается с заданной строки
WinGet, overwatch_id, pid, Overwatch  ; ищем окно овера, сохраняем идентификатор ее процесса в overwatch_id
SetKeyDelay, 20, 1200           ; 

loop                            ; бесконечный цикл
  {
  SendMessage, 6, 1, -1,, ahk_pid %overwatch_id%
                                ; рфка не обрабатывает сообщения, если окно ввода неактивно
                                ; мы "обманем" её, послав сообщение об активации окна
  loop, 40                      ; "обманывать" будем 1 раз на каждые 40 действий, чтоб она не устала :)
    {
    ControlSend,, {SPACE}, ahk_pid %overwatch_id%
                                ; жмем пробел и собираем лут
    }
  }
В коде как видите есть обманка, была сделана каким-то юзером для игры РФ онлайн, там тоже самое было, вот он и придумал такую обманку. Но в РФке она работала - а тут ноль толку,хз.
Нет ни у кого идей случаем?=(

Re: Не пойму,почему скрипт на работает в свернутом окне

Posted: 26 May 2018, 08:05
by gloomyr666
Был еще такой вариант, я не проверял честно говоря первый (в посте), но думаю он так же работает -

Code: Select all

; стартуем прогу
Program = "F:\games\Overwatch\Overwatch.exe" ; полный путь к программе
ProgTitle = Overwatch ; заголовок программы

; запускаем программу
; Run %Program%

; ждем программу 5 секунд, если не запустится или не найдется - выходим
WinWait, %ProgTitle%, , 5
if ErrorLevel
{
MsgBox Программа не обнаружена. Выход.
ExitApp
}

; некоторые служебные параметры
#SingleInstance, Force
SetTitleMatchMode, 2
Coordmode, Mouse, Screen
CoordMode, Pixel, Screen
SetKeyDelay 30,50

; получаем список программ с указанным заголовком
WinGet, WinList, List, %ProgTitle%

; проверяем список указателей на программы, если 0 - выходим
if (%WinList1% = 0)
{
MsgBox Программа не обнаружена. Выход.
ExitApp
}

x = 0 ; просто переменная для счетчика

winId1 = ahk_id %WinList1%

; количество повторов 99999 (просто Loop если бесконечно)
loop
{
SendMessage, 6, 1, -1,, ahk_pid %winId1%
loop, 40
}

ControlSend, ,{Up}, %winId1%
Sleep, 2000 ; ждем 2 секунды
}
}
суть в том,что игра - Overwatch - шутерок такой стандартный,есть чат команды и все такое. Так вот - если открыть чат и назначить кнопку в коде например "1" - то даже СВЕРНУТОЕ окно будет печатать в чат строке игры эту цифру. Однако, если закрыть чат строку - игра будто не видит свернутой все эти посылы нажатий клавиш. Хз почему такая разница и как ее пофиксить =(