Что нового

Как можно узнать координаты клиентсвой части окна

joker2d

Новичок
Сообщения
182
Репутация
0
Есть окно размеры которого известны, есть его хендл
можно как то получить координаты клиентской области этого окна относительно общих размеров этого окна ?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
для Х:
RB окна - LT окна - ширина рамки ока *2
для Y:
RB окна - LT окна - высота шапки - ширина рамки

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


Добавлено:
Сообщение автоматически объединено:

Ну и координаты клиентской части - это: LT окна + высота шапки + ширина рамки.
Что мешает использовать опцию
Код:
Opt(MouseCoordMode(2))

?
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
для браузеров ширина шапки разная
ну и рамка там тоже чуть отличаеться

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

Код:
Opt(MouseCoordMode(2))

не вариант у меня есть координаты допустим кнопки относительно размеров всего окна(нельзя получить другие)
и я хочу кликнуть по ней ControlClick, а у него как понимаю координаты только относительно клиентской части
 
A

Alofa

Гость
joker2d сказал(а):
... так что нет способа узнать хотябы размеры клиентской части по хендлу окна? ...
А что, WinGetClientSize не годится?

joker2d сказал(а):
... у меня есть координаты допустим кнопки относительно размеров всего окна(нельзя получить другие)
и я хочу кликнуть по ней ControlClick ...
И зачем вам координаты кнопки для ControlClick?
"controlID" вполне достаточно.

joker2d сказал(а):
... для браузеров ...
Для браузера скорее всего - это не годится. В клиентской области браузеров нет кнопок - там ссылки.
Значит все-таки вычисляйте координату ссылки (которая может и измениться) или покопайтесь Здесь.
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
Alofa
WinGetClientSize подошло бы но почему то когда передаю хендл не возвращает ничего

передаю так
Код:
WinGetClientSize (0x00122390)


или так
Код:
WinGetClientSize ("0x00122390")


Кнопка это картинка никих "controlID" для нее нет, IE.au3 мне неподходит
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
joker2d сказал(а):
WinGetClientSize подошло бы но почему то когда передаю хендл не возвращает ничего
Потому что эта функция возвращает массив.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
joker2d
кликнуть по ней ControlClick, а у него как понимаю координаты только относительно клиентской части
Неправильно понимаете. ControlClick() использует координаты относительно самого элемента (контрола). А то, что элемент совпадает с клиентской областью - это частный случай. Кстати, в браузерах клиентская область не совпадает с элементом, отображающим страницу.

Дескриптор нужно передавать так
Код:
WinGetClientSize (HWnd(0x00122390))


Belfigor
использовать опцию
Код:
Opt(MouseCoordMode(2))
Модераторам тоже иногда нужно выдавать бан для чтения справки.
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
InnI
Код:
WinGetClientSize (HWnd(0x00122390))

вот так заработало спасибо!
Кстати, в браузерах клиентская область не совпадает с элементом, отображающим страницу.
Да теперь вижу вообще не совпадает, а можно как то узнать размеры области в браузере по которой можно кликнуть ControlClick, зная хендл окна браузера, то есть примерно так
Код:
ControlClick(HWnd($hWnd), "", "", "left", 1, $x, $y)
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
joker2d
Запускаете Au3Info, перетаскиваете "мишень" на нужный вам элемент. На вкладке Control находится информация об элементе (именно этот элемент "видит" AutoIt). Координаты "ControlClick Coords" - это как раз те, которые использует ControlClick.
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
InnI
Да это то понятно )
Я просто хотел универсальное определение для разных браузеров, то есть такое нельзя сделать ?
 
Верх