【发布时间】:2014-07-06 17:15:42
【问题描述】:
有没有办法通过 AutoIt发送WM_GETMINMAXINFO 消息,以确定窗口的最大和最小尺寸?我找不到任何使用 PostMessage() 发送struct 的示例,尽管我不确定这是否相关。
【问题讨论】:
-
你不能使用
PostMessage,你必须使用SendMessage。
有没有办法通过 AutoIt发送WM_GETMINMAXINFO 消息,以确定窗口的最大和最小尺寸?我找不到任何使用 PostMessage() 发送struct 的示例,尽管我不确定这是否相关。
【问题讨论】:
PostMessage,你必须使用SendMessage。
这是我认为应该的。根据一些测试,它似乎适用于某些窗口而不适用于其他窗口?不确定。但无论如何,这会创建结构,然后使用_SendMessage。
#include <WindowsConstants.au3>
#include <SendMessage.au3>
Global Const $tagMINMAXINFO = "struct;long;long;endstruct;" & _
"struct;long MaxSizeX;long MaxSizeY;endstruct;" & _
"struct;long MaxPositionX;long MaxPositionY;endstruct;" & _
"struct;long MinTrackSizeX;long MinTrackSizeY;endstruct;" & _
"struct;long MaxTrackSizeX;long MaxTrackSizeY;endstruct;"
Local $tMMI = DllStructCreate($tagMINMAXINFO)
_SendMessage(WinGetHandle("Test"), $WM_GETMINMAXINFO, 0, $tMMI, 0, "wparam", "struct*")
ConsoleWrite(StringFormat("Max Size: %ix%i\n", DllStructGetData($tMMI, "MaxSizeX"), DllStructGetData($tMMI, "MaxSizeY")))
ConsoleWrite(StringFormat("Max Position: %ix%i\n", DllStructGetData($tMMI, "MaxPositionX"), DllStructGetData($tMMI, "MaxPositionY")))
ConsoleWrite(StringFormat("Min Track Size: %ix%i\n", DllStructGetData($tMMI, "MinTrackSizeX"), DllStructGetData($tMMI, "MinTrackSizeY")))
ConsoleWrite(StringFormat("Max Track Size: %ix%i\n", DllStructGetData($tMMI, "MaxTrackSizeX"), DllStructGetData($tMMI, "MaxTrackSizeY")))
【讨论】:
_SendMessage 是 SendMessage 周围的 AutoIt 包装器。