找回密码
 加入
搜索
查看: 5400|回复: 18

[AU3基础] 关于坐标在不同显示状态下的变化问题

 火.. [复制链接]
发表于 2012-1-11 09:53:54 | 显示全部楼层 |阅读模式
我在以下几种情况运行AUTOIT:
1.远程桌面(我的笔记本显示);
2.主机显示屏(液晶电视)
3.不开显示器,主机单独运行

这时的椌件坐标有何差别?如何解决呢?
发表于 2012-1-11 13:16:09 | 显示全部楼层
相对坐标应该是一样的,绝对坐标可能会因为分辨率的不同而不同
 楼主| 发表于 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="[CLASS:MMCMainFrame]";=====定义服务窗口
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[4]<>"stopped" Then 
Sleep(1000)
ControlClick ($1, '', 'ToolbarWindow321', 'left', 1, 249, 11);点击相对控件停止服务
Else
ControlClick ($1, '', 'ToolbarWindow321', 'left', 1, 227, 11);点击相对控件,开启服务
EndIf
EndIf
以下为图解。相对于控件ToolbarWindow321坐标图示:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +10 收起 理由
mid_w + 10

查看全部评分

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

评分

参与人数 1金钱 +30 贡献 +2 收起 理由
afan + 30 + 2 +

查看全部评分

 楼主| 发表于 2012-1-11 21:03:03 | 显示全部楼层
真是详细啊!3克油!
慢慢学习中!
 楼主| 发表于 2012-1-11 21:16:20 | 显示全部楼层
我在使用相对控件坐标时,在不同电脑上有差距,这是为何呢?
发表于 2012-1-11 21:18:34 | 显示全部楼层
回复 7# mid_w


   为什么你总是不详细说明情况??差距在哪。
 楼主| 发表于 2012-1-11 21:33:48 | 显示全部楼层
设置 caret(插入符)函数的坐标更新方式, 坐标值均相对于当前激活窗口:
0 = 激活窗口的相对坐标
1 = 绝对屏幕坐标 (默认)
2 = 激活窗口客户区的相对坐标
我没有在编码中设置,是不是就是绝对屏幕坐标 (默认)呢?而半芯竹说"“界面”处的坐标为松开鼠标左键时的屏幕绝对坐标,如果之前更改过MouseCoordMode,使用此坐标时需 Opt('MouseCoordMode',1)"
 楼主| 发表于 2012-1-11 21:36:31 | 显示全部楼层
本帖最后由 mid_w 于 2012-1-11 21:43 编辑
回复  mid_w


   为什么你总是不详细说明情况??差距在哪。
半芯竹 发表于 2012-1-11 21:18



    我在笔记本上是990,10; 台式机上是740,10.这估计是屏幕坐标吧!
如果我设了Opt("CaretCoordMode", 0)  即相对窗口坐标, 是不是就不会有差距了呢?
发表于 2012-1-11 21:39:11 | 显示全部楼层
回复 10# 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获取问题,也有可能是坐标获取问题!没有此软件,无法帮你测试到。

你先在笔记本和台式台测试我发的点击服务的代码看看是否正常。如果两台机都正常,就是你方法问题了。
 楼主| 发表于 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


我以前用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'
除非你窗口的控件随着屏幕宽度变化而变化,要不然怎么会相对坐标不对呢?你用控件这个坐标就行了,用户和屏幕的不管它。。再尝试下。你上面截图的三个都有。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-20 18:53 , Processed in 0.085240 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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