mid_w 发表于 2012-1-11 09:53:54

关于坐标在不同显示状态下的变化问题

我在以下几种情况运行AUTOIT:
1.远程桌面(我的笔记本显示);
2.主机显示屏(液晶电视)
3.不开显示器,主机单独运行

这时的椌件坐标有何差别?如何解决呢?

骗子 发表于 2012-1-11 13:16:09

相对坐标应该是一样的,绝对坐标可能会因为分辨率的不同而不同

mid_w 发表于 2012-1-11 13:41:08

相对坐标是指窗口坐标?
编写时CONTROLCLICK中如何用相对坐标呢?
ControlClick ( "标题", "文本", 控件ID [, 按钮 [, 点击次数 [, X 坐标 [, Y 坐标]]]] )
[, X 坐标 [, Y 坐标]是指绝对坐标吗?

半芯竹 发表于 2012-1-11 15:41:09

本帖最后由 半芯竹 于 2012-1-11 16:23 编辑

回复 3# mid_w #include 'ServiceControl.au3'
#RequireAdmin
Dim $1="";=====定义服务窗口
If WinExists($1,'')=False Then
ShellExecute("Services.msc")
WinWait($1,'',10)
Sleep(1000)
Else
WinActivate($1,"")
Sleep(1000)
EndIf
$a = _ServGetDetails('W32Time')
If @error <> -1 Then
Local $ix = ControlListView($1, '', 'SysListView321', 'FindItem', "Windows Time", 0)
Local $ix1 = ControlListView($1, '', 'SysListView321', 'select', $ix)
ControlFocus($1, '', 'SysListView321')
If $a<>"stopped" Then
Sleep(1000)
ControlClick ($1, '', 'ToolbarWindow321', 'left', 1, 249, 11);点击相对控件停止服务
Else
ControlClick ($1, '', 'ToolbarWindow321', 'left', 1, 227, 11);点击相对控件,开启服务
EndIf
EndIf以下为图解。相对于控件ToolbarWindow321坐标图示:

半芯竹 发表于 2012-1-11 15:52:22

ControlClick ($1, '', 'ToolbarWindow321', 'left', 1, 227, 11)
可以是相对控件本身坐标,屏幕坐标,用户坐标。。
“控件”处的坐标为松开鼠标左键时的相对于控件范围的坐标,对于无具体ID的控件的仍可尝试使用此坐标进行 ControlClick 点击;
   “用户”处的坐标为松开鼠标左键时的相对于窗口客户区的坐标,使用此坐标方式时需先用 Opt('MouseCoordMode', 2)
   “界面”处的坐标为松开鼠标左键时的屏幕绝对坐标,如果之前更改过MouseCoordMode,使用此坐标时需 Opt('MouseCoordMode',1)

mid_w 发表于 2012-1-11 21:03:03

{:face (301):}真是详细啊!3克油!
慢慢学习中!

mid_w 发表于 2012-1-11 21:16:20

我在使用相对控件坐标时,在不同电脑上有差距,这是为何呢?

半芯竹 发表于 2012-1-11 21:18:34

回复 7# mid_w


   为什么你总是不详细说明情况??差距在哪。

mid_w 发表于 2012-1-11 21:33:48

设置 caret(插入符)函数的坐标更新方式, 坐标值均相对于当前激活窗口:
0 = 激活窗口的相对坐标
1 = 绝对屏幕坐标 (默认)
2 = 激活窗口客户区的相对坐标
我没有在编码中设置,是不是就是绝对屏幕坐标 (默认)呢?而半芯竹说"“界面”处的坐标为松开鼠标左键时的屏幕绝对坐标,如果之前更改过MouseCoordMode,使用此坐标时需 Opt('MouseCoordMode',1)"

mid_w 发表于 2012-1-11 21:36:31

本帖最后由 mid_w 于 2012-1-11 21:43 编辑

回复mid_w


   为什么你总是不详细说明情况??差距在哪。
半芯竹 发表于 2012-1-11 21:18 http://www.autoitx.com./images/common/back.gif


    我在笔记本上是990,10; 台式机上是740,10.这估计是屏幕坐标吧!
如果我设了Opt("CaretCoordMode", 0)即相对窗口坐标, 是不是就不会有差距了呢?

半芯竹 发表于 2012-1-11 21:39:11

回复 10# mid_w


    这个相对坐标,不关系的。你说说出现的情况。。

mid_w 发表于 2012-1-11 21:53:46

WinActive("文华财经 - 赢智程序化交易系统")
Sleep(3000)
ControlClick("文华财经","",59392,"left",1,998,10)
以上是我的代码,没有设过opt,这个该是绝对坐标了?因为到台式机上不能运行,只有改坐标740,10后才可以运行.

如果在前面加上一句Opt("MouseCoordMode", 0),是不是就可以用相对窗口坐标了呢,不需要总是改动坐标了?

半芯竹 发表于 2012-1-11 22:18:43

本帖最后由 半芯竹 于 2012-1-11 22:21 编辑

回复 12# mid_w


    Opt("MouseCoordMode", 1) 你试下这个。另外你的相对坐标用什么获取?
Au3.WProbe.exe建议使用AFAN的好工具。搜索论坛吧,这个可以有的。

ControlClick("文华财经","",59392,"left",1,998,10)

有可能是你的59392获取问题,也有可能是坐标获取问题!没有此软件,无法帮你测试到。

你先在笔记本和台式台测试我发的点击服务的代码看看是否正常。如果两台机都正常,就是你方法问题了。

mid_w 发表于 2012-1-13 08:52:20

本帖最后由 mid_w 于 2012-1-13 08:55 编辑

回复mid_w


    Opt("MouseCoordMode", 1) 你试下这个。另外你的相对坐标用什么获取?
Au3.WProbe. ...
半芯竹 发表于 2012-1-11 22:18 http://www.autoitx.com./images/common/back.gif

我以前用AUTOIT WINDOW INFO,刚刚试用了AFAN的AU3.WPROBE.
以下是台式机上的结果:

而我在笔记本上的横坐标都是998,纵坐标一样。
以上的结果我应该如何写CONTORLCLICK呢?

你的代码在我的台式机上出错了:

半芯竹 发表于 2012-1-14 11:41:02

本帖最后由 半芯竹 于 2012-1-14 11:44 编辑

#include <ServiceControl.au3>
这样试下。。如果还是提示错误,请下载这个UDF放到脚本根目录。再尝试改回#include 'ServiceControl.au3'
除非你窗口的控件随着屏幕宽度变化而变化,要不然怎么会相对坐标不对呢?你用控件这个坐标就行了,用户和屏幕的不管它。。再尝试下。你上面截图的三个都有。
页: [1] 2
查看完整版本: 关于坐标在不同显示状态下的变化问题