Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: clicker_student on April 01, 2019, 11:36:01 PM
-
Не могу понять странное поведение. У меня скрипт кликает в программе на иконку, которая открывает станлартное диалоговое окно системы Windows для выбора файла. Для красоты я решил это диалаговое окно выровнять и установить координаты/размеры с помощью
// получим координаты окна "Выбрать файл для загрузки"
WNDGETINFO ($hwnd_load_file, $x_loadfile, $y_loadfile, $w_loadfile, $h_loadfile)
$line = STRCONCAT("Координаты окна 'Загрузить скрипт из файла': x = ", $x_loadfile,", $y = ", $y_loadfile,", $w = ", $w_loadfile, ", $h = ", $h_loadfile)
TFWRITE("log.txt", $line)
TFWRITE("log.txt", "Изменим координаты окна 'Загрузить скрипт из файла'")
// установим размеры окна "Выбрать файл для загрузки" для стабильности работы
WNDSIZE($hwnd_load_file, 600, 400)
// переместим окно "Выбрать файл для загрузки" в заданную точку
WNDPOS($hwnd_load_file, 300, 300)
После изменения координат/размеров функций я проверяю эти значения
// получим координаты окна "Выбрать файл для загрузки"
WNDGETINFO ($hwnd_load_file, $x_loadfile, $y_loadfile, $w_loadfile, $h_loadfile)
$line = STRCONCAT("Координаты окна 'Загрузить скрипт из файла': x = ", $x_loadfile,", $y = ", $y_loadfile,", $w = ", $w_loadfile, ", $h = ", $h_loadfile)
TFWRITE("log.txt", $line)
Вижу такой лог
Найдена иконка 'Загрузить скрипт из файла'
Найден диалог 'Загрузить скрипт из файла', hwnd = 66862
Координаты окна 'Загрузить скрипт из файла': x = 168, $y = 97, $w = 464, $h = 331
Изменим координаты окна 'Загрузить скрипт из файла'
Координаты окна 'Загрузить скрипт из файла': x = 468, $y = 397, $w = 600, $h = 400
И тут я столкнулся с двумя странностями:
1. Видно, что новые координаты изменились относительно старых. Вместо того чтобы записать абсолютные координаты, WNDPOS() прибавила к старым координатам по 300 пикселей. При этом WNDSIZE() отработала как надо размеры окна изменились (виртуально)
2. После изменения окна я делаю скриншот. И на нем видно окно на самом деле никуда не сдвинулось и не изменило размеров.
Кто-то сталкивался с таким уже? Как это понимать и как решать, подскажите пожалуйста.
-
Кто-то сталкивался с таким уже? Как это понимать и как решать, подскажите пожалуйста.
Не замечал такого. Скорее всего hwnd не верный. Стандартное окно состоит из множества "полей" и у каждого свой hwnd.
Или попробуй менять размеры и положение окна с помощью WNDSETINFO.
-
Не замечал такого. Скорее всего hwnd не верный. Стандартное окно состоит из множества "полей" и у каждого свой hwnd.
Или попробуй менять размеры и положение окна с помощью WNDSETINFO.
Черт, вы правы! Не видел вашего ответа и только что сделал такое же открытие! :D
Я искал окно диалога очень просто - поделил всю область на 9 секторов и обходил их в цикле мышкой, в кажой точке запрашивал HWND через $hwnd_current = HGET($x_current , $y_current) . И наивно полагал, что нахожу окно диалога.
На самом деле я "удачно" попадал на какие-то другие элементы. Выяснил это ручными экспериментами. Два дня голову ломал, спасибо Вам за помощь!