Автор Тема: Как можно узнать координаты клиентсвой части окна  (Прочитано 2979 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн joker2d [?]

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

Русское сообщество AutoIt


Оффлайн Belfigor [?]

  • Локальный модератор
  • *
  • Сообщений: 3490
  • Репутация: 927
    • Награды
  • Версия AutoIt: 3.3.14.0
для Х:
RB окна - LT окна - ширина рамки ока *2
для Y:
RB окна - LT окна - высота шапки - ширина рамки

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


Добавлено: Ноябрь 06, 2015, 21:47:50
Ну и координаты клиентской части - это: LT окна + высота шапки + ширина рамки.
Что мешает использовать опцию
Код: AutoIt [Выделить]
Opt(MouseCoordMode(2))

?

Любые темы внутри раздела "Разработка ботов" не названные в соответствии с правилами раздела, будут закрываться.
Любой ответ, любого пользователя в теме с предупреждением, направленный на решение вопроса, произведенный до того как предупреждение было исправлено, приведет к закрытию темы и удалению всего что было после предупреждения.

Оффлайн joker2d [?]

  • Новичок
  • *
  • Сообщений: 158

  • Автор темы
  • Репутация: 0
    • Награды
для браузеров ширина шапки разная
ну и рамка там тоже чуть отличаеться

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

Код: AutoIt [Выделить]
Opt(MouseCoordMode(2))

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

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1388
  • Репутация: 201
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
... так что нет способа узнать хотябы размеры клиентской части по хендлу окна? ...
А что, WinGetClientSize не годится?

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

... для браузеров ...
Для браузера скорее всего - это не годится. В клиентской области браузеров нет кнопок - там ссылки.
Значит все-таки вычисляйте координату ссылки (которая может и измениться) или покопайтесь Здесь.
« Последнее редактирование: Ноябрь 07, 2015, 03:02:55 от Alofa »

Русское сообщество AutoIt

Re: Как можно узнать координаты клиентсвой части окна
« Ответ #3 Отправлен: Ноябрь 07, 2015, 02:20:00 »

Оффлайн joker2d [?]

  • Новичок
  • *
  • Сообщений: 158

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

передаю так
Код: AutoIt [Выделить]
WinGetClientSize (0x00122390)


или так
Код: AutoIt [Выделить]
WinGetClientSize ("0x00122390")


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

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2695
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
WinGetClientSize подошло бы но почему то когда передаю хендл не возвращает ничего
Потому что эта функция возвращает массив.


Думай, прежде чем говорить.

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3754
  • Репутация: 991
    • Награды
  • Версия AutoIt: 3.3.14.0
joker2d
Цитировать
кликнуть по ней ControlClick, а у него как понимаю координаты только относительно клиентской части
Неправильно понимаете. ControlClick() использует координаты относительно самого элемента (контрола). А то, что элемент совпадает с клиентской областью - это частный случай. Кстати, в браузерах клиентская область не совпадает с элементом, отображающим страницу.

Цитировать
передаю так
Дескриптор нужно передавать так
Код: AutoIt [Выделить]
WinGetClientSize (HWnd(0x00122390))


Belfigor
Цитировать
использовать опцию
Код: AutoIt [Выделить]
Opt(MouseCoordMode(2))

Модераторам тоже иногда нужно выдавать бан для чтения справки.

Оффлайн joker2d [?]

  • Новичок
  • *
  • Сообщений: 158

  • Автор темы
  • Репутация: 0
    • Награды
InnI
Код: AutoIt [Выделить]
WinGetClientSize (HWnd(0x00122390))

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


Русское сообщество AutoIt

Re: Как можно узнать координаты клиентсвой части окна
« Ответ #7 Отправлен: Ноябрь 07, 2015, 22:24:05 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3754
  • Репутация: 991
    • Награды
  • Версия AutoIt: 3.3.14.0
joker2d
Запускаете Au3Info, перетаскиваете "мишень" на нужный вам элемент. На вкладке Control находится информация об элементе (именно этот элемент "видит" AutoIt). Координаты "ControlClick Coords" - это как раз те, которые использует ControlClick.

Оффлайн joker2d [?]

  • Новичок
  • *
  • Сообщений: 158

  • Автор темы
  • Репутация: 0
    • Награды
InnI
Да это то понятно )
Я просто хотел универсальное определение для разных браузеров, то есть такое нельзя сделать ?

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3754
  • Репутация: 991
    • Награды
  • Версия AutoIt: 3.3.14.0
joker2d
Цитировать
для разных браузеров
Потому они и разные, что каждый из них индивидуален.

Русское сообщество AutoIt

Re: Как можно узнать координаты клиентсвой части окна
« Ответ #10 Отправлен: Ноябрь 08, 2015, 20:40:54 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
13136 Просмотров
Последний ответ Декабрь 15, 2009, 19:03:09
от Sspl
4 Ответов
4539 Просмотров
Последний ответ Сентябрь 23, 2010, 15:08:13
от axlwor
2 Ответов
4535 Просмотров
Последний ответ Ноябрь 19, 2010, 14:23:43
от akoulev
1 Ответов
2093 Просмотров
Последний ответ Август 08, 2011, 22:59:43
от Kaster
0 Ответов
2769 Просмотров
Последний ответ Август 26, 2012, 22:52:04
от joker2d
1 Ответов
2868 Просмотров
Последний ответ Апрель 26, 2013, 14:42:05
от CreatoR
1 Ответов
3035 Просмотров
Последний ответ Сентябрь 09, 2013, 19:16:33
от Zaramot
1 Ответов
857 Просмотров
Последний ответ Апрель 01, 2015, 22:38:49
от InnI
0 Ответов
163 Просмотров
Последний ответ Февраль 02, 2018, 06:21:45
от DJ Beast
7 Ответов
377 Просмотров
Последний ответ Февраль 14, 2018, 16:07:09
от InnI