1

Тема: AHK: Работа скрипта только в определённом окне

Здравствуйте. Как сделать, чтобы скрипт

MButton::
  Click down             ; Имитация нажатия левой кнопки.
  MouseGetPos, x1, y1    ; Взять начальные координаты мыши.
  KeyWait, MButton       ; Ждать отпускания средней кнопки.
  Click up               ; Имитация отпускания левой кнопки.
  MouseGetPos, x2, y2    ; Конечные координаты мыши.
  dx:=Abs(x1-x2)         ; Смещения по осям X и Y.
  dy:=Abs(y1-y2)
  if (dx>1.5 || dy>10)   ; Чтобы отличить щелчок от выделения.
    Send, ^{vk43}        ; Ctrl-C, копирование.
  else
    Send, ^{vk56}        ; Ctrl-V, вставка.
  Exit
 #NoTrayIcon
 #й::ExitApp

работал только в окне с параметрами:
(Title): IpGold Surfer v.2.0.15.324
(Class): ahk_class TfmMain
(ProcessName): ahk_exe ipgoldsurfer.exe
( ProcessPath ): ahk_exe R:\IpGoldSurfer\ipgoldsurfer.exe,
а на другие не реагировал?

2

Re: AHK: Работа скрипта только в определённом окне

Предлагаю ознакомиться с командами ControlClick и ControlSend - в отличии от Click и Send умеют взаимодействовать с конкретным окном.

Может пригодиться:

  • IfWinExist / IfWinNotExist - проверка существования окна

  • IfWinActive / IfWinNotActive - является ли окно активным

3

Re: AHK: Работа скрипта только в определённом окне

ypppu, спасибо. Я вчера день мучалась с ControlClick и ControlSend, но ничего не получилось. Помогите кодом, пожалуйста.

4

Re: AHK: Работа скрипта только в определённом окне

работал только в окне

Если вы про то, когда окно активно, то так:

#IfWinActive, IpGold Surfer v.2.0.15.324 ahk_class TfmMain ahk_exe R:\IpGoldSurfer\ipgoldsurfer.exe
MButton::
  Click down             ; Имитация нажатия левой кнопки.
  MouseGetPos, x1, y1    ; Взять начальные координаты мыши.
  KeyWait, MButton       ; Ждать отпускания средней кнопки.
  Click up               ; Имитация отпускания левой кнопки.
  MouseGetPos, x2, y2    ; Конечные координаты мыши.
  dx:=Abs(x1-x2)         ; Смещения по осям X и Y.
  dy:=Abs(y1-y2)
  if (dx>1.5 || dy>10)   ; Чтобы отличить щелчок от выделения.
    Send, ^{vk43}        ; Ctrl-C, копирование.
  else
    Send, ^{vk56}        ; Ctrl-V, вставка.
  Exit
#IfWinActive

 #NoTrayIcon
 #й::ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: Работа скрипта только в определённом окне

Самый простой вариант -  создать контекстно-чувствительную горячую клавишу директивой #IfWinActive


#NoTrayIcon
#IfWinActive, IpGold Surfer v.2.0.15.324 ahk_class TfmMain ahk_exe ipgoldsurfer.exe

MButton::
  Click down             ; Имитация нажатия левой кнопки.
  MouseGetPos, x1, y1    ; Взять начальные координаты мыши.
  KeyWait, MButton       ; Ждать отпускания средней кнопки.
  Click up               ; Имитация отпускания левой кнопки.
  MouseGetPos, x2, y2    ; Конечные координаты мыши.
  dx:=Abs(x1-x2)         ; Смещения по осям X и Y.
  dy:=Abs(y1-y2)
  if (dx>1.5 || dy>10)   ; Чтобы отличить щелчок от выделения.
    Send, ^{vk43}        ; Ctrl-C, копирование.
  else
    Send, ^{vk56}        ; Ctrl-V, вставка.
  Return

 #й::ExitApp

Секция автовыполнения как правило заканчивается командой Return, а директивы принято помещать в верхней части кода.

При английской раскладке клавиатуры #й может на сработать. Но существуют VK и SC коды.

6

Re: AHK: Работа скрипта только в определённом окне

serzh82saratov, ypppu спасибо. То, что нужно. Поняла свои элементарные ошибки.

7

Re: AHK: Работа скрипта только в определённом окне

Ещё надо использовать закрывающуюю директиву #IfWinActive, иначе Win+Q будет тоже работать только в том окне, хотя может оно так и нужно в данном случае.

#NoTrayIcon

#IfWinActive, IpGold Surfer v.2.0.15.324 ahk_class TfmMain ahk_exe ipgoldsurfer.exe
MButton::
  Click down             ; Имитация нажатия левой кнопки.
  MouseGetPos, x1, y1    ; Взять начальные координаты мыши.
  KeyWait, MButton       ; Ждать отпускания средней кнопки.
  Click up               ; Имитация отпускания левой кнопки.
  MouseGetPos, x2, y2    ; Конечные координаты мыши.
  dx:=Abs(x1-x2)         ; Смещения по осям X и Y.
  dy:=Abs(y1-y2)
  if (dx>1.5 || dy>10)   ; Чтобы отличить щелчок от выделения.
    Send, ^{vk43}        ; Ctrl-C, копирование.
  else
    Send, ^{vk56}        ; Ctrl-V, вставка.
  Return
#IfWinActive

#vk51::ExitApp    ;  "Win+Q"
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui