找回密码
 加入
搜索
查看: 7641|回复: 8

[AU3基础] 悬浮窗如何让它不超过任务栏和屏幕边界

  [复制链接]
发表于 2012-8-12 14:08:56 | 显示全部楼层 |阅读模式
如题,我想让我做的悬浮窗像如输入法状态悬浮窗、金山的网络悬浮窗那样,再怎么拉也不能超过任务栏,也不能超过屏幕边界。
发表于 2012-8-12 14:19:43 | 显示全部楼层
获取 窗口的坐标、大小 然后 和分辨率的 长宽范围 做对比

AutoIt宏
@DesktopHeight 桌面高度(像素) (垂直分辨率)
@DesktopWidth 桌面宽度(像素) (水平分辨率)




WinGetPos
--------------------------------------------------------------------------------

获取指定窗口的坐标位置和大小等属性.


WinGetPos ( "窗口标题" [, "窗口文本"] )




参数

窗口标题 目标窗口标题. 参考标题高级定义.
窗口文本 [可选参数] 指定窗口包含的文本.



返回值

成功: 返回一个含有下列信息的4维数组:
$array[0] = X 坐标
$array[1] = Y 坐标  
$array[2] = 宽度  
$array[3] = 高度  
失败: 返回值为1,并把 @error 设为 1,说明未找到目标窗口.  



注意/说明

若目标窗口被最小化则 WinGetPos 的返回值将是负数(比如 -32000),但对(非最小化的)隐藏窗口则可正常工作.
若窗口标题是"Program Manager"则本函数将返回桌面的大小.若同时有多个窗口符合匹配条件则程序将获取最近被激活的窗口的大小.
发表于 2012-8-12 14:22:18 | 显示全部楼层
回复 1# cjb292721


    任务栏高度可以获取到,屏幕像素也可以获取到,窗口大小你自己知道,窗口位置也知道,算一下不就知道有没有超出边界,超出就拉回来靠边停放就行了。

例:屏幕像素:1280*800
窗口大小:300*150
获取到窗口位置为: (1000,600)

那么1000+300 > 1280,即知道右侧越界,于是移动窗口到(1280-300,600)位置
发表于 2012-8-12 15:45:53 | 显示全部楼层
菜鸟路过,只为学习,多谢。
 楼主| 发表于 2012-8-12 16:13:12 | 显示全部楼层
回复 3# ajian55


    获取任务栏高度怎么获取?我曾经想过直接设置个变量,不过涉及的判断太多,XP锁定和不锁定不一样,Win7大图标和小图标也不一样,XP和Win7也不一样……
发表于 2012-8-12 18:11:52 | 显示全部楼层
进来学习了.
发表于 2012-8-12 19:36:30 | 显示全部楼层
回复 5# cjb292721


    要善于搜索:
http://www.autoitx.com/forum.php ... 1%C0%B8%B8%DF%B6%C8

一句代码的事儿~
发表于 2012-8-12 20:21:33 | 显示全部楼层
$pos = WinGetPos("[class:Shell_TrayWnd]")
MsgBox(0,"",$pos[3])
回复 5# cjb292721
 楼主| 发表于 2012-8-13 19:58:31 | 显示全部楼层
感谢以上牛人,WinGetPos("[class:Shell_TrayWnd]")我昨天已经找到了,而且还找到用WinMove来移动窗口
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-20 12:15 , Processed in 0.111266 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表