Тема: AHK: Аналог Gui MinSize
Есть ли в WINAPI аналог Gui +MinSize, чтобы установить значения в стороннем окне, и узнать их значения?
Win10x64 AhkSpy, Hotkey, ClockGui
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Есть ли в WINAPI аналог Gui +MinSize, чтобы установить значения в стороннем окне, и узнать их значения?
Перехватывай WM_GETMINMAXINFO сообщение.
Malcev
Нашёл на офф форуме.
WM_GETMINMAXINFO := 0x0024
info := GetMinMaxInfo()
MsgBox, % info["min_x"] "`n" info["min_y"] "`n" info["max_y"] "`n" info["max_y"]
return
GetMinMaxInfo() {
Global WM_GETMINMAXINFO
Static MINMAXINFO := 0, Dummy := NumPut(VarSetCapacity(MINMAXINFO, 40 + (32 << !!A_IsUnicode)), MINMAXINFO, 0, "UInt")
NumPut(0, MINMAXINFO, 24, "Int")
NumPut(0, MINMAXINFO, 28, "Int")
NumPut(0, MINMAXINFO, 32, "Int")
NumPut(0, MINMAXINFO, 36, "Int")
SendMessage, % WM_GETMINMAXINFO, , &MINMAXINFO, , A
return {"min_x" : NumGet(MINMAXINFO, 24, "Int"), "min_y" : NumGet(MINMAXINFO, 28, "Int"), "max_x" : NumGet(MINMAXINFO, 32, "Int"), "max_y" : NumGet(MINMAXINFO, 36, "Int")}
}
Но как установить значения не нашёл. И почему ты указал перехват?
https://www.autohotkey.com/boards/viewtopic.php?t=40009
Тут тоже не нашли решение.
Инжектиться и перехватывать надо потому, что чужой процесс.
https://stackoverflow.com/questions/176 … indow-size
Тут пишут что не катит.
Ты пробовал, нет примера со своим окном? Не найду механизм где перехват, и как и что отправлять обратно.
Со своим как-нибудь так:
OnMessage(WM_GETMINMAXINFO := 0x0024, "GetMinMaxInfo")
Gui, +Resize
Gui, show, w600 h600
return
GetMinMaxInfo(wParam, lParam)
{
NumPut(500, lParam+0, 24, "int")
NumPut(500, lParam+0, 28, "int")
NumPut(800, lParam+0, 32, "int")
NumPut(800, lParam+0, 36, "int")
return true
}
Спасибо!
Не напомнишь как перехватывать оконные сообщения? Нашёл пример с user32, про WM_GETMINMAXINFO не помню уже куда копать.
code =
(LTrim
SetWorkingDir, %A_ScriptDir%
#Include %A_ScriptDir%\Lib\MinHook.ahk
MsgBox `% hook1 := New MinHook("user32.dll", "SetDlgItemTextW", "SetDlgItemTextW_Hook")
hook1.Enable()
return
SetDlgItemTextW_Hook(hDlg, nIDDlgItem, lpString) {
global hook1
return DllCall(hook1.original, "ptr", hDlg, "int", nIDDlgItem, "str", "Hello ^_^")
}
)
Сабклассинг работает через SetWindowLong.
Но разве OnMessage не должен работать для окон другого приложения в случае инжекта?
MinHook тут не нужен.
Но разве OnMessage не должен работать для окон другого приложения в случае инжекта?
Не знаю, не пробовал, может и сработает.
А вообще через SetWindowsHookEx ставишь хук на WH_CALLWNDPROC и отлавливаешь WM_GETMINMAXINFO.
Это можно сделать через CreateRemoteThread, как это сделано с инжектом autohotkey.dll либо написать самому простенькую dll и инжектить ее с помощью SetWindowsHookEx как здесь:
https://www.autohotkey.com/boards/viewt … mp;t=94344
MinHook тут не нужен.
Как оказалось он не работает в нужном приложении.
Не знаю, не пробовал, может и сработает
Я пробовал, реагирует только на окна скрипта.
либо написать самому простенькую dll
Такое я не умею.
Это можно сделать через CreateRemoteThread, как это сделано с инжектом autohotkey.dll
А если как тут https://www.autohotkey.com/boards/viewt … 44#p418590 указать путь к autohotkey.dll, не должно работать?
Нет.
Вот вызов SetWindowsHookEx через инжект autohotkey.dll.
http://forum.script-coding.com/viewtopi … 91#p128891
Такое я не умею.
Так по моей ссылке показано как поставить хук на WH_CBT.
Посмотри чем отличается WH_CBT от WH_CALLWNDPROC и подправь dll.
подправь dll
Я их и компилировать не умею. И там вроде все действия прописаны в dll, ерунда получается, код мне нужен в анк.
Вот вызов SetWindowsHookEx через инжект autohotkey.dll.
Это видел, но не разобрался. Ладно, не судьба, я думал такое готовое где то есть, казалось что востребовано должно быть, но пока значит не сделали, подожду.
А ты хочешь каждый раз новые значения минимума/максимума указывать?
А ты хочешь каждый раз новые значения минимума/максимума указывать?
Да. Ну и вообще..
Это видел, но не разобрался
Получилось запустить твой пример, заработало! Заметил что при ExitApp и само приложение закрывается.
Такое бы причесать для общего случая, и в коллекцию.
Заметил что при ExitApp и само приложение закрывается
ХЗ, теперь пропало.
новые значения минимума
Скажу по секрету, хотя может ты знал, некоторые окна с помощью WINMOVE можно увеличить до какого то предела, чаще до размера рабочей области, иногда больше, но тоже до какого то предела, если ввести минимум, то такое ощущение что до любого размера можно увеличить.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться