1 (изменено: Hydrogenium, 2015-09-04 09:55:49)

Тема: AHK: Не могу определить клиентские координаты для клика

Клик идёт в неактивное окно.
Не получается определить клиентские координаты !


FuncClick(this_id)
{ 
    x := 104
    y := 142 
    CoordMode, Mouse, Client
    ControlClick, X%x% Y%y%, ahk_pid %this_id%,,LEFT,1         
}

Из справки:

CoordMode - Устанавливает режим координат различных команд на соответствие активному окну или экрану.

Получается что CoordMode не канает чтоль ?
Или как быть ?

2

Re: AHK: Не могу определить клиентские координаты для клика

Не канает, координаты считаются от верхнего левого угла целевого окна.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Не могу определить клиентские координаты для клика

Как быть ?

4

Re: AHK: Не могу определить клиентские координаты для клика

Попробуйте в Paint. У меня работает хоть в неактивном, хоть в свёрнутом окне:

1::ControlClick, x300 y300, Безымянный - Paint

5 (изменено: Hydrogenium, 2015-09-04 17:07:04)

Re: AHK: Не могу определить клиентские координаты для клика

1::ControlClick, x102 y200, Калькулятор

Если окно не свёрнуто, то на клиентские не реагирует и кликает цифру "9"
Если окно свёрнуто, то кликает по клиентским координатам (цифра "3")

6

Re: AHK: Не могу определить клиентские координаты для клика

На клиентские ЧТО не реагирует?

Где в программе Paint цифры 9 и 3?

7 (изменено: Hydrogenium, 2015-09-04 18:08:40)

Re: AHK: Не могу определить клиентские координаты для клика

Это для теста на калькуляторе:

1::ControlClick, x102 y200, Калькулятор

А код:


F10::     
    1::ControlClick, x300 y300, Безымянный - Paint
Return

Рисует линии

+ открыть спойлер

http://f6.s.qip.ru/OgbqiopU.png

8

Re: AHK: Не могу определить клиентские координаты для клика

Значит Вы научились пользоваться  ControlClick. Осталось попасть.

9 (изменено: Hydrogenium, 2015-09-04 18:18:42)

Re: AHK: Не могу определить клиентские координаты для клика

В заголовке темы и сказано про определение "клиентских" координат, а не про что-то другое.

10

Re: AHK: Не могу определить клиентские координаты для клика

Hydrogenium, не нужно цитировать предыдущий пост. Отредактируйте свои сообщения.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11 (изменено: Hydrogenium, 2015-09-04 18:17:50)

Re: AHK: Не могу определить клиентские координаты для клика

Поправил.

12

Re: AHK: Не могу определить клиентские координаты для клика

Так я не пойму, задача в том, чтобы определить координаты клиентской области окна?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13 (изменено: Hydrogenium, 2015-09-04 20:08:07)

Re: AHK: Не могу определить клиентские координаты для клика

Есть неактивное окно с определённым ID (this_id).

Требуется совершить в нём клик по клиентским координатам, типа:


WinGet, active_id, ID, A
CoordMode, Mouse, Client
Click %x%, %y%

(при этом не активируя окно)

ControlClick, X%x% Y%y%, ahk_pid %this_id%,,LEFT,1

Тут ControlClick норм работает и кликает в неактивном окне, но я не могу привязать его к клиентской части

14

Re: AHK: Не могу определить клиентские координаты для клика

А кто сказал, что команда ControlClick подчиняется CoordMode?

CoordMode
Sets coordinate mode for various commands to be relative to either the active window or the screen.

  • Param1 Mouse: Affects MouseGetPos, Click, and MouseMove/Click/Drag.

15 (изменено: Hydrogenium, 2015-09-04 21:21:05)

Re: AHK: Не могу определить клиентские координаты для клика

Задача:

Есть неактивное окно с определённым ID (this_id).
Требуется совершить в нём клик по клиентским координатам (при этом не активируя окно).

И не имеет значение с CoordMode или без.
CoordMode для визуального примера был упомянут. Я ещё в 1-ом посте описал, что меня терзают смутные сомнения его использовать !

16

Re: AHK: Не могу определить клиентские координаты для клика


FuncClick(this_id)  { 
    x := 104, y := 142  
    GetClientPos(WinExist("ahk_pid" this_id), left, top) 
    ControlClick, % "X" x+left " Y" y+top
}

GetClientPos(hwnd, ByRef left, ByRef top)  {
    VarSetCapacity(pwi, 60, 0), NumPut(60, pwi, 0, "UInt")
    DllCall("GetWindowInfo", "Ptr", hwnd, "UInt", &pwi)
    top:=NumGet(pwi,24,"int")-NumGet(pwi,8,"int")
    left:=NumGet(pwi,52,"int") 
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17

Re: AHK: Не могу определить клиентские координаты для клика

serzh82saratov, спасиб огромное !