Тема: 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 и само приложение закрывается
ХЗ, теперь пропало.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться