Что нового

[Окна / Диалоги] Изменение размеров окна приложения (скиновое)

  • Автор темы ustas
  • Дата начала
U

ustas

Гость
Моё почтение всем.

На днях начал использовать AutoIt, написал скрипт, всё нормально. Вот только проблемы появились с изменением размеров окна, по ширине и высоте.
Изменяю размеры в параметрах функции WinMove, других функций не нашел. Так вот рамки того окна пропадают, но содержимое окна не меняет свои размеры. Когда это приложение начинаешь мышкой перетаскивать, то границы окна видно, и они такие, как я указал в функции WinMove.
Тоже самое происходит и с WinSetState( "name_win", "", @SW_MAXIMIZE ). Окно по сути развернулось, т.к. ни перетащить его, ни изменить размеры мышкой, но визуально, оно как было в одном положении и одних размеров, так и осталось.
Я так подозреваю что дело в том, что эта программа использует какой-то оконный скин, может она по-другому как-то принимает команды?

Есть какие-нибудь решения для подобного рода проблем?
ЗЫ. По форуму искал, вроде ничего не нашел.

Буду очень благодарен за любую помощь.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Почитай хелп на тему
Код:
GUICtrlSetResizing  ( controlID, resizing )

для каждого созданного контрола ты должен указать его поведение при ресайзе.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
kaster [?]
для каждого созданного контрола ты должен указать его поведение при ресайзе.
Не обязательно, есть опция Opt("GUIResizeMode", resizing) которая задаёт “растягивание” для всех элементов, однако функция GUICtrlSetResizing подавляет эту опцию.
 
Автор
U

ustas

Гость
Нет, Вы меня немного неверно поняли, либо я недостаточно объяснил проблему. Окно программы, которое мне необходимо ресайзить, оно является сторонним приложением, не созданным GUICreate. Просто внешняя программа, которая использует оконный скин.
Добавлено:
Сообщение автоматически объединено:

Если я опять невнятно выражаюсь, за что собсна и извиняюсь :smile: то так будет понятней:
http://www.skylinesoft.com/SkylineGlobe/Corporate/Download/TerraExplorerDownload.aspx
Это та самая программка, которой не получается сделать ресайз окна из скрипта функцией WinMove, а также она некорректно отрабатывает WinSetState( "name_win", "", @SW_MAXIMIZE ).

Подскажите, как это можно побороть?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
ustas [?]
Окно программы, которое мне необходимо ресайзить, оно является сторонним приложением, не созданным GUICreate
И по вашему эта деталь не важна? Такие “мелочи” нужно указыать в начале.

Это та самая программка, которой не получается сделать ресайз окна из скрипта функцией WinMove
А она сама хоть имеет свойство изменения размера, или вы хотите насильно изменить размер? Если насильно то придётся менять и размеры всех элементов, не очень хороший выбор.
 
Автор
U

ustas

Гость
>>А она сама хоть имеет свойство изменения размера
Да, конечно. Мышкой она растягивается как угодно, и максимизируется также по кнопке.
 
Автор
U

ustas

Гость
Ребята, есть какое-либо решение для данной проблемы или ничего здесь сделать не получится?
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
156
Программа действительно использует скин.
не помогли:

WinMove
_WinAPI_SetWindowPos
_WinAPI_UpdateWindow

ни даже свернуть/развернуть после изминения размера ...
GUICtrlSetResizing просто некчему применить.
 
Автор
U

ustas

Гость
Ясно. Спасибо за помощь и внимание ) Буду искать другие варианты решения.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
А если попробовать послать в окно сообщение WM_SIZE?
 
Автор
U

ustas

Гость
Извиняюсь конечно, но как это сделать?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
Автор
U

ustas

Гость
Спасибо, попробовал, окно той программы вообще никак не реагирует.
WinGetHandle возвращает правильный идентификатор, @error после всех вызов - 0.
Получается что больше вариантов нет?
 
Автор
U

ustas

Гость
Кстати, пробовал менять размеры эмуляцией мышки. Типа:

Код:
Opt( "MouseCoordMode", 2 )

MouseMove( 30, высота_окна, 100 )
MouseDown( "left" )
MouseMove( 30, до_требуемого_размера, 100 )
MouseUp( "left" )

MouseMove( ширина_окна, 200, 100 )
MouseDown( "left" )
MouseMove( до_требуемого_размера, 200, 100 )
MouseUp( "left" )
Несколько раз запускал, прям отлично отработало, где бы это окно не находилось. Но потом оказалось это работает раз через раз, так сказать. То мажет мимо окна, то не дотягивает до нужной грани и перемещает окно вместо изменения размера.
И еще очень важная вещь, если ставлю скорость 1 (самую высокую), то окно остается вообще без каких-либо изменений.

Я наверно что-то не так делаю?
 
Верх