上面的操作虽然没有问题但使用时有一个隐含条件,窗体必须完全在屏幕内(至少控件部分),因为鼠标无法点到屏幕外的地方。现实中还是有这种可能的,除去人为因素外,低分辨率是一个直接因素。目前本人能想到两个方法,一是改变分辨率,但还没有找到对应的命令,而且不同的显示器能调节的范围也不一样,这个方法有待考证;另一个方法是将窗体移动到屏幕内,这个方法很容易实现。
下面是移动窗体方法在安装Kv2004的应用
$st=WinGetPos("江民杀毒软件KV2004","欢迎进入")
if $st[0]+$st[2]>@DesktopWidth Then
$mx=@DesktopWidth-$st[2]
Else
$mx=$st[0]
EndIf
if $st[1]+$st[3]>@DesktopHeight Then
$my=@DesktopHeight-$st[3]-35
Else
$my=$st[1]
EndIf
if $mx<$st[0] or $my<$st[1] Then
WinMove("江民杀毒软件KV2004","欢迎进入",$mx,$my)
EndIf
在这段脚本中,先取得当前窗体的位置到数组st中,再判断窗体的右边和下边是否有超出屏幕的,计算出恰好在屏幕内时的位置。如果这个位置小于原坐标则进行移动。
上面一句$my=@DesktopHeight-$st[3]-35,是设置调整到的Y坐标位置,之所以又减35,是为了避开任务栏。
另外上面的方法在实际应用中也不是一成不变的,上面只是考虑窗体右边和下边移入窗口(因为大多安装安装窗体的操作控件在偏右下的位置),但左边和上面是不是在窗体里就不一定了。其实应该以控件是否可以为中心,当然还是这个思路。编写脚本时做相应的修改。