nickwu 发表于 2010-7-17 12:12:51

[已解决]如何实现一个static类的操作(关于一个搜狗拼音自动配置脚本的实现)

本帖最后由 nickwu 于 2010-7-17 22:40 编辑

最近用autoit搞了个搜狗拼音的自动安装,autoit的强大让它实现起来易如反掌
不过好景不长,当我打算写一个搜狗拼音的自动配置程时,碰到了一个困难,如图

我想用autoit实现的是上图黑框中标签的切换
我用窗口信息工具看了一下,发现那是一个static类,并且所有按钮的枚举都是87
之后我尝试了很多办法来实现标签的切换,都不成功
如:WinActivate、ControlClick和ControlShow
请哪位高手帮忙看看,如何实现搜狗拼音配置界面里static控件的切换?

lynfr8 发表于 2010-7-17 15:53:48

ControlClick ( "标题", "文本", 控件ID [, 按钮 [, 点击次数 [, X坐标 [, Y坐标 ]]]] )
看看帮助文件
X坐标 [可选参数] 要点击控件的位置(X坐标). 默认为控件中心.
Y坐标 [可选参数] 要点击控件的位置(Y坐标). 默认为控件中心.

nickwu 发表于 2010-7-17 16:33:10

ControlClick ( "标题", "文本", 控件ID [, 按钮 [, 点击次数 [, X坐标 [, Y坐标 ]]]] )
看看帮助文件
X坐 ...
lynfr8 发表于 2010-7-17 15:53 http://www.autoitx.com/images/common/back.gif

这个命令我试过,不过都没有成功,不知道是不是坐标没设对
有人尝试过编一个跟此类似的脚本的吗?借代码看看
或者还有人有更好的办法的吗?
{:face (52):}

lynfr8 发表于 2010-7-17 16:46:51

实在不行就找图点击

nickwu 发表于 2010-7-17 17:45:09

实在不行就找图点击
lynfr8 发表于 2010-7-17 16:46 http://www.autoitx.com/images/common/back.gif

什么是“找图点击”
{:face (52):}

lynfr8 发表于 2010-7-17 17:52:31

本帖最后由 lynfr8 于 2010-7-17 17:53 编辑

回复 5# nickwu

通俗一点讲就是:
你可以理解为你目前所看到屏幕是一张图
找图呢就是在这张图找到和设定的图片(比如你提问的-题库-你把这两个字截图下来)的屏幕坐标
既然找到坐标
无需识别控件(例如你提问的static类)就能点击所获取的坐标
这样就可以解决一些难识别或者难直接点击的控件的自动安装了
此乃自动安装最后的必杀技了!
一旦掌握什么自动安装都不在话下!
楼主自行研究吧。

所需UDF和DLL到此下载:(里面有经典的例子作为参考学习)
    http://www.autoitx.com/thread-13677-1-1.html

lynfr8 发表于 2010-7-17 17:56:56

这个命令我试过,不过都没有成功,不知道是不是坐标没设对
有人尝试过编一个跟此类似的脚本的吗?借代 ...
nickwu 发表于 2010-7-17 16:33 http://www.autoitx.com/images/common/back.gif

你检查一下自己的标题和控件名称(包括枚举)
还有坐标是否正确(分屏幕坐标和相对坐标)
正确的话应该是没问题的

nickwu 发表于 2010-7-17 18:08:55

拜谢楼上朋友的解答,我还会继续研究,成功之后将代码奉上,并做结贴处理

nickwu 发表于 2010-7-17 22:33:34

本帖最后由 nickwu 于 2010-7-17 22:35 编辑

代码我摸索了好久终于成功了,感谢"lynfr8"大牛的提示:找图点击,呵呵
附上源码,供其他网友参考,再次谢谢这里的热心网友,谢谢你的解答
{:face (327):}
ShellExecute("C:\Program Files\SogouInput\5.0.1.4185\config.exe")
sleep(800)
$pos = WinGetPos("搜狗拼音输入法设置")
If IsArray($pos) Then
   $x=MouseGetPos(0)
   $y=MouseGetPos(1)
   WinActivate ("搜狗拼音输入法设置")
   MouseClick ( "left",$pos+80,$pos+120,1,0)
   ControlCommand("搜狗拼音输入法设置","切换英文状态时保留输入窗口中已经存在的字符并上屏","Button7","Check","")
   ControlClick("搜狗拼音输入法设置","","Button89")
   MouseClick ( "left",$pos+80,$pos+148,1,0)
   ControlCommand("搜狗拼音输入法设置","开启皮肤推荐","","UnCheck","")
   ControlClick("搜狗拼音输入法设置","","Button89")

   MouseClick ( "left",$pos+80,$pos+236,1,0)
   ControlCommand("搜狗拼音输入法设置","不自动升级","Button12","Check","")
   ControlCommand("搜狗拼音输入法设置","P2P升级加速:使用P2P方法,使您的升级速度更稳定更快速","Button17","UnCheck","")
   ControlClick("搜狗拼音输入法设置","","Button87")
   MouseMove($x,$y)
EndIf
exit

chishingchan 发表于 2013-2-14 22:48:47

貌似修改注册表或配置文件来的方便!
页: [1]
查看完整版本: [已解决]如何实现一个static类的操作(关于一个搜狗拼音自动配置脚本的实现)