找回密码
 加入
搜索
楼主: afan

[原创] Au3.WProbe 窗口探测 1.0

 火... [复制链接]
发表于 2010-9-1 23:46:08 | 显示全部楼层
下载看来,不错,支持开发!!!!!!1

评分

参与人数 1金钱 +15 收起 理由
afan + 15 :)

查看全部评分

发表于 2010-9-2 01:18:00 | 显示全部楼层
老大真厉害辛苦了
发表于 2010-9-2 06:42:24 | 显示全部楼层
这个对我们还是很实用的
发表于 2010-9-2 06:45:14 | 显示全部楼层
不知是否我操作问题,在复制某些控件文本时,程序给多加了空行。我测试qqflash这个第一界面时,复制“欢迎使用 QQFlasher 安装向导”这句时发现的,造成写出的脚本有问题了。可能是他是非标准控件的原因吧,但用0.3来手动复制,则是没有这个问题的。我说的这个问题,在这个qqflash结束的最后一页,也是复制出来的控件文本,自动换行。qqflash程序在我提供的链接中下载。
http://www.autoitx.com/thread-18006-1-1.html
发表于 2010-9-2 06:57:01 | 显示全部楼层
此为反映上面问题的录像

http://www.ctdisk.com/file/377652
发表于 2010-9-2 09:02:55 | 显示全部楼层
更新真快哈,继续哈。。
 楼主| 发表于 2010-9-2 10:12:56 | 显示全部楼层
本帖最后由 afan 于 2010-9-2 10:31 编辑
不知是否我操作问题,在复制某些控件文本时,程序给多加了空行。我测试qqflash这个第一界面时,复制“欢迎使 ...
23070205 发表于 2010-9-2 06:45



    从你录像的后半段(0.3版)可以看出它的原始数据就是有断(空行)行的。也并非说它是非标控件,文本本来就是可以多行的,而你只需要其中的一部分而已。
   在本工具中,复制功能当然是复制此控件的全部文本,如果只复制一行那就没什么意义了~
解决的办法很简单,在你的自动工具中加一句对剪贴板的操作:
$Clip = StringRegExpReplace($Clip, '(?s)\s*([^\r\n]+[^\s])\s*.*', '$1')

即可。这行代码可以取到有字符的第一行。

示例:
$Str = _
                '' & @CRLF & _
                '    从这里开始,我只要这一行      ' & @CRLF & _
                '' & @CRLF & _
                '这里还有很多字符' & @CRLF
Msgbox(0, '原字符串', '"' & $str & '"')

$str = StringRegExpReplace($str, '(?s)\s*([^\r\n]+[^\s])\s*.*', '$1')
Msgbox(0, '取到的有效字符', '"' & $str & '"')


需要注意的是,请不要将此行代码对标题进行处理,因为标题前面的空格是有效的,这一段会删除前面的空格等非字数据。
发表于 2010-9-2 10:14:35 | 显示全部楼层
老大更新到0.4.8版了?
发表于 2010-9-2 10:44:53 | 显示全部楼层
本帖最后由 23070205 于 2010-9-2 10:50 编辑

回复 100# afan


    又学到一招,感谢afan超版的指导。我更新下代码去


确实如你所说,这样去掉了后面的断开的语句。呵呵,佩服!
发表于 2010-9-2 11:28:43 | 显示全部楼层
现在这样配合0.48来说,简化了不少操作。感谢afan的付出。
不过还有2个疑问:
1,send发送热键与controlclick点击控件id,操作是一样的吧

2.现在0.48程序中的控件坐标还是不太了解,请afan超版示范下吧,用户坐标就是原来的界面坐标,屏幕坐标就是当前的在所在屏的坐标,那控件坐标,指的是点击的控件的相对位置吧,那么我们就要controlclick时不仅要写出控件id,而且还要写点击的此id的控件坐标位置是吧。

这样理解对不,我觉得这样也很强大,只是要点击的控件坐标还是要求准确些,与mouseclick有相同之处,如果点击不正确,就无法识别。
发表于 2010-9-2 11:41:10 | 显示全部楼层
呵呵.下载玩玩

评分

参与人数 1金钱 +20 收起 理由
afan + 20 处女贴啊,鼓励下

查看全部评分

 楼主| 发表于 2010-9-2 11:42:40 | 显示全部楼层
现在这样配合0.48来说,简化了不少操作。感谢afan的付出。
不过还有2个疑问:
1,send发送热键与controlc ...
23070205 发表于 2010-9-2 11:28



    你理解的完全正确。
举个简单的例子,比如说你要打开一个文件夹,或者桌面的某个快捷方式(当然这里不准使用Run或ShellExecute方式),如何操作,用 MouseClick 可以,不过,鼠标移过去了,影响用户其它工作。用 ControlClick 操作?那些图标并无具体控件 ID ,怎么点击?当然就要用到 ControlClick 后面的控件坐标参数了。
以下为双击桌面第一个图标的例子。用探测器得到桌面标题为“Program Manager”, 控件类名为“SysListView321”,控件坐标为“36, 31”:
Sleep(2000)
ControlClick ('Program Manager', '', 'SysListView321', 'left', 2, 36, 31)


试下感觉~
 楼主| 发表于 2010-9-2 11:44:28 | 显示全部楼层
本帖最后由 afan 于 2010-9-2 11:45 编辑

以上这段代码就算看不到桌面的情况下仍可以执行双击第一个图标的效果。而用 MouseClick 则必须在显示桌面的情况下才有效果。
发表于 2010-9-2 11:51:46 | 显示全部楼层
上面这段代码在win7测试没有通过,比如我要点击开始按钮

Sleep(2000)
ControlClick ('开始', '', 'Button0', 'left', 2, 29, 21)
 楼主| 发表于 2010-9-2 11:57:45 | 显示全部楼层
回复 107# 23070205


    看来Win7的控件类不同,开始按钮在我这里XP sp3 是Button1,而你是 Button0
另外,窗标题你使用的是控件文本,显然不对,如果没有窗标题,应该使用窗口类名,如下:
Sleep(2000)
ControlClick ('[CLASS:Shell_TrayWnd]', '', 'Button1')
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-20 01:11 , Processed in 0.083488 second(s), 16 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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