Autohotkey 中文论坛

完整版: 如何创建一个在右下角显示的窗口
你目前正在浏览的是简化版. 请点击这里浏览完整版
我想在窗口的右下角显示一个窗口显示信息,信息的内容是动态变化的,希望窗口的大小能随着内容改变
可是默认的Gui坐标是以左上角为准的

现在我是这么解决的
引用:获取屏幕分辨率
;WinGetPos [, X, Y, Width, Height, WinTitle, WinText, ExcludeTitle, ExcludeText]
;参数WinText使用“Program Manager”,
;该命令会返回桌面的大小,一般和当前屏幕分辨率相同。
WinGetPos,,, desktopw, desktoph, Program Manager
Window1x := 0.7*desktopw ;窗口的x坐标
Window1y := 0.75*desktoph ;窗口的y坐标
Window1w := 0.3*desktopw ;;窗口的宽度
Window1h := 0.25*desktoph ;;窗口的高度
Content1w := 0.95*Window1w
可是这样只能显示固定大小的窗口
有没有别的办法显示 呢?∧


[ 本帖最后由 bbbb 于 2009-3-23 14:02 编辑 ]
数学问题!
代码:
假设要显示的窗口的宽和高分别为:
theWindowWidth:=300 ;宽
theWindowHeight:=200 ;高
获取当前显示器的工作范围并设置显示窗口的坐标:
SysGet MonitorWorkArea,MonitorWorkArea ;范围
theWindowX:=MonitorWorkAreaRight-theWindowWidth-5 ;坐标X,这里减5是为了减去"窗口的边框宽度"
theWindowY:=MonitorWorkAreaBottom-theWindowHeight-27 ;坐标Y,注意这里还要减去开始菜单的高度,一般30左右,视 Windows主题不同而定
显示窗口:
Gui, Show, x%theWindowX% y%theWindowY% w%theWindowWidth% h%theWindowHeight%
Return
GuiClose:
ExitApp

正好以前写过,当然可能还有更好的办法
楼上的代码实现了右下角的显示窗口,但还是只能显示固定宽高的窗口,而不能根据窗口信息内容调整窗口大小,同时保持在窗口右下角显示
最后的解决方法,先显示窗口,并使用Autosize参数使窗口自动调整大小,再获取窗口宽高信息,重新调整显示位置
代码:
;参数WinText使用“Program Manager”,
;该命令会返回桌面的大小,一般和当前屏幕分辨率相同。
WinGetPos,,, desktopw, desktoph, Program Manager
Window1x := 0.7*desktopw
Window1y := 0.75*desktoph
Window1w := 0.3*desktopw
Window1h := 0.25*desktoph
Content1w := 0.95*Window1w

Gui,show,x%Window1x% y%Window1y% w%Window1w% h%Window1h% NA AutoSize,显示窗口

;将窗口中的背景颜色设为完全透明
WinSet, Transparent,0,显示窗口

;获取窗口信息,因为上面的show语句使用了Aitosize参数,所以现在获得的窗口宽高是根据窗口信息内容自动调整过的
WinGetPos, X, Y, Width, Height, 显示窗口
X:=desktopw-Width
Y:=desktoph-Height
;MsgBox, %X%-%Y% W%Width% H%Height%
;根据窗口信息调整位置,重新显示
Gui,show,x%X% y%Y% w%Width% h%Height% NA AutoSize,显示窗口
;回复透明度
WinSet, Transparent, 220,显示窗口
参考网址