pdp320921 发表于 2011-2-24 15:06:05

[已解决]鼠标的坐标位置如何确定(在不同分辨率的显示器下)?

本帖最后由 pdp320921 于 2011-2-26 11:44 编辑

对于坐标问题很困惑:
Opt("MouseCoordMode", 1)
$size = WinGetPos("指定窗口");
$pos =ControlGetPos("窗口标题", "窗口文本", 控件ID)
$x = $size+$pos
$y = $size+$pos
MouseClick("left",$x,$y)
如果控件ID不存在的话
如果想用MouseClick,可是该函数里面的坐标鼠标相对屏幕的位置,如何保证在不同的分辨率的显示器下确定鼠标点击“控件”坐标
如果控件ID不存在,但通过"窗口信息工具"可以看到"控件点击坐标",应该就是ControlGetPos里的坐标,可是试了不行

如何保证在不同的分辨率的显示器下确定鼠标点击“控件”坐标?

求解!

飘云 发表于 2011-2-24 18:22:39

你没仔细看Opt("MouseCoordMode", 1)这个吧?注意看帮助,
0 = 激活窗口的相对坐标
1 = 绝对屏幕坐标(默认)
2 = 激活窗口客户区的相对坐标
你选0或2不就可以了,屏幕分辨率不一定,窗口尺寸一般总是一定的吧。
当然,如果窗口加入了可调整尺寸边界样式,也就是窗口会因为用户的拖拉改变尺寸,那么就只能通过控件句柄用函数ControlClick来点击了
如果碰上即可以改变尺寸的窗口,又不是标准GUI,控件句柄检索不到的话,那我也不知道怎么办了。

wsfda 发表于 2011-2-24 18:26:20

二楼正解....

pdp320921 发表于 2011-2-24 20:24:03

本帖最后由 pdp320921 于 2011-2-24 20:26 编辑

回复#2楼

Opt("MouseCoordMode", 1)
0 = 激活窗口的相对坐标 ;激活窗口相对什么的坐标?
1 = 绝对屏幕坐标(默认)
2 = 激活窗口客户区的相对坐标 ;是客户区相对窗口的坐标吗?客户去又是怎么定义的呢?

yhxhappy 发表于 2011-2-25 01:04:27

懒得截图说明了,下面代码楼主可以摸索摸索

激活窗口的相对坐标:指的是当前所激活的窗口的左上角为基准,左上角的坐标是:X=0,Y=0
激活窗口客户区的相对坐标 :客户区是指窗口边框里面的区域,以该区域的左上角为基准#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$GUI = GUICreate("函数演示", 300, 200) ; 创建居中显示的对话框窗口
GUICtrlCreateLabel("鼠标当前坐标", 10, 10, 80, 20)
$Label1 = GUICtrlCreateLabel("", 10, 40, 250, 20)
$Label2 = GUICtrlCreateLabel("", 10, 60, 250, 20)
$Label3 = GUICtrlCreateLabel("", 10, 80, 250, 20)
       
GUISetState(@SW_SHOW) ; 显示对话框窗口
AdlibRegister("Pos")

While 1
        If WinActive($GUI, "") = 0 Then WinActivate($GUI, "")
        $msg = GUIGetMsg()
        If $msg = $GUI_EVENT_CLOSE Then Exit
WEnd

Func Pos()
       
        Opt("MouseCoordMode", 0)
        $Pos = MouseGetPos()
        GUICtrlSetData($Label1, "相对于当前窗口,        X: " & $Pos & "        Y: " & $Pos)
       
        Opt("MouseCoordMode", 1)
        $Pos = MouseGetPos()
        GUICtrlSetData($Label2, "相对于整个屏幕,        X: " & $Pos & "        Y: " & $Pos)
       
        Opt("MouseCoordMode", 2)
        $Pos = MouseGetPos()
        GUICtrlSetData($Label3, "相对于窗口客户区,        X: " & $Pos & "        Y: " & $Pos)
EndFunc

pdp320921 发表于 2011-2-25 09:52:57

感谢5#的回复
窗口客户区就是窗口除了标题外的区域吗?

飘云 发表于 2011-2-26 11:35:04

回复 6# pdp320921


    是的,再说你执行下5楼的代码,然后随便找个窗口看一下不就知道了嘛,显示(0,0)的就是原点

jsgh1983 发表于 2011-11-3 10:19:10

这问题我也遇到过,应该不能通过显示器大小判断!
页: [1]
查看完整版本: [已解决]鼠标的坐标位置如何确定(在不同分辨率的显示器下)?