Тема: AHK: Не стабильный resize
Hi!
В некоторых приложениях WinMove почему-то не меняет размер окна, даже там, где руками он легко меняется. Можно как-то помочь этой команде выполнить resize?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Hi!
В некоторых приложениях WinMove почему-то не меняет размер окна, даже там, где руками он легко меняется. Можно как-то помочь этой команде выполнить resize?
Next, скоро придет строгий модератор и скажет:
Next, ознакомьтесь с этой темой, отредактируйте свой пост.
Так что лучше это сделать самостоятельно. А потом придет второй модератор, и они вдвоем расскажут тебе свой взгляд на выражение "Не стабильный". ![]()
Открытый класс
PS! Нужно уметь отличать случаи скрытого противопоставления:
1) к такому предложению можно задать вопрос
Пример: Мы посадили не серебристую ель. (А какую?)
2) такое предложение можно продлить при помощи одного из противительных союзов
Пример: Мы посадили не серебристую ель, а зелёную.
Не стабильный resize, а изменчивый. Так что тут всё нормально (хотя, resize можно было на русский перевести).
Поэтому можно перейти к вопросу - в каком приложении так бывает? Режим окна оконный? Приложение графическое?
Оконный. Можно сворачивать, есть рамка, за которую можно тянуть меняя размер окна. Приложение смешанное, графика, текст.
Окно активно во время выполнения WinMove?
Если да, то можно так:
winmove,% "ahk_id " WinExist("A"),,,,800,600
На аглицком форуме похожая проблема обсуждалась.
Что-то там получилось, когда прикрутили оконные сообщения. Ещё команда DllCall закомментирована, можно попытаться вместо WinMove использовать.
F8::
SetTitleMatchMode, 2
IfWinExist, PuTTY ahk_class PuTTY
{
WinGet, hwndputty, id
;hwndputty:="ahk_id " hwndputty
WinGetTitle, t, ahk_id %hwndputty%
WinGetPos, x, y, w, h
msgbox=,
(LTrim
hwndputty(%hwndputty%)
t(%t%)
x(%x%) y(%y%) w(%w%) h(%h%)
)
;WinMove, , , , , , % h+15
MoveWindow(hwndputty, x, y, w, h+15)
WinGetPos, x, y, w, h
msgbox=,
(LTrim
hwndputty(%hwndputty%)
t(%t%)
x(%x%) y(%y%) w(%w%) h(%h%)
)
}
Else msgbox, 16, , PuTTY not found!
return
MoveWindow(hwnd, x, y, w="", h="", repaint=1)
{
WM_ENTERSIZEMOVE=0x0231
WM_EXITSIZEMOVE=0x0232
SendMessage, WM_ENTERSIZEMOVE
WinMove, , , x, y, w, h
;DllCall("MoveWindow", "UInt", hwnd, "Int", x, "Int", y, "Int", w, "Int", h, "Int", repaint)
SendMessage, WM_EXITSIZEMOVE
}Окно активно во время выполнения WinMove?
Если да, то можно так:winmove,% "ahk_id " WinExist("A"),,,,800,600
Именно winmove и не работает. Иногда.
Что-то там получилось, когда прикрутили оконные сообщения.
Работает также как и winmove.
Можно через PostMessage выполнить те же действия, что выполняются мышкой при изменении размера окна? Я пытался поймать через Winspector по wm_size, размерам окна до и после, но утонул в куче сообщений, не смотря на фильтры и ловлю миллисекунд. Знать бы точно что искать.
Иногда.
При каких условиях, это самое "иногда" случается?
Было бы проще, если бы можно было увидеть ваш код.
^1::
WinMove,A,,,,500,200
return
Вопрос снимается.
Найдено решение?
Нет, отказался от этого пути.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться