这段代码通过两种方式获取窗口的坐标和大小,同时对比两种方式的结果

 

F1::
hwnd := WinExist("ahk_class Notepad")
; 读取客户端区域的宽度(w)和高度(h)
GetWindowRect(hwnd, x, y)
GetClientSize(hwnd, w, h)
MsgBox, 函数坐标: %X%`,%Y%`n函数窗口大小: %W%x%H%
return

; 自带命令获取窗口坐标和大小【会有大小不准的情况】
F3::
WinGetPos, X, Y, W, H, ahk_class Notepad
MsgBox, 命令坐标: %X%`,%Y%`n命令窗口大小: %W%x%H%
Return

GetClientSize(hwnd, ByRef w, ByRef h) {
  VarSetCapacity(rect, 16)
  , DllCall("GetClientRect", "uint", hwnd, "uint", &rect)
  w := NumGet(rect, 8, "int")
  , h := NumGet(rect, 12, "int")
}

GetWindowRect(hwnd, ByRef x, ByRef y) {
  VarSetCapacity(rect, 16, 0)
  , DllCall("GetWindowRect", "Ptr", hwnd, "Ptr", &rect)
  x := NumGet(rect, 0, "int")
  y := NumGet(rect, 4, "int")
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。