cjb292721 发表于 2012-8-12 14:08:56

悬浮窗如何让它不超过任务栏和屏幕边界

如题,我想让我做的悬浮窗像如输入法状态悬浮窗、金山的网络悬浮窗那样,再怎么拉也不能超过任务栏,也不能超过屏幕边界。

veket_linux 发表于 2012-8-12 14:19:43

获取 窗口的坐标、大小 然后 和分辨率的 长宽范围 做对比

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




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

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


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




参数

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



返回值

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



注意/说明

若目标窗口被最小化则 WinGetPos 的返回值将是负数(比如 -32000),但对(非最小化的)隐藏窗口则可正常工作.
若窗口标题是"Program Manager"则本函数将返回桌面的大小.若同时有多个窗口符合匹配条件则程序将获取最近被激活的窗口的大小.

ajian55 发表于 2012-8-12 14:22:18

回复 1# cjb292721


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

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

那么1000+300 > 1280,即知道右侧越界,于是移动窗口到(1280-300,600)位置

qq309266378 发表于 2012-8-12 15:45:53

菜鸟路过,只为学习,多谢。

cjb292721 发表于 2012-8-12 16:13:12

回复 3# ajian55


    获取任务栏高度怎么获取?我曾经想过直接设置个变量,不过涉及的判断太多,XP锁定和不锁定不一样,Win7大图标和小图标也不一样,XP和Win7也不一样……

lxzan 发表于 2012-8-12 18:11:52

进来学习了.

ajian55 发表于 2012-8-12 19:36:30

回复 5# cjb292721


    要善于搜索:
http://www.autoitx.com/forum.php?mod=viewthread&tid=4707&highlight=%C8%CE%CE%F1%C0%B8%B8%DF%B6%C8

一句代码的事儿~

xms77 发表于 2012-8-12 20:21:33

$pos = WinGetPos("")
MsgBox(0,"",$pos)回复 5# cjb292721

cjb292721 发表于 2012-8-13 19:58:31

{:face (411):} 感谢以上牛人,WinGetPos("")我昨天已经找到了,而且还找到用WinMove来移动窗口
页: [1]
查看完整版本: 悬浮窗如何让它不超过任务栏和屏幕边界