找回密码
 加入
搜索
查看: 8544|回复: 22

[AU3基础] 【已解决】窗口激活的问题 有图 求解

 火.. [复制链接]
发表于 2010-9-9 21:15:35 | 显示全部楼层 |阅读模式
本帖最后由 superpangya 于 2010-9-10 14:58 编辑

if not winactive (xxx)   then winactivate(xxx)
winwaitactivate(xxx)
send(xxxx)

如果窗口没有激活,那么激活窗口。
等待窗口激活,发送XXX命令。

现在窗口始终处于非激活状态,后面的命令也发送不出去,请问是哪里出了问题?(用鼠标点击窗口,使激活, send继续。。)


图在#4



问题已经解决:
1种方法(#10)
Run("C:\wodewyc\FramePkg.exe")
If Not  WinActive('McAfee Agent','McAfee Agent 的安装已成功完成。') Then  WinActivate('McAfee Agent','McAfee Agent 的安装已成功完成。')
WinWaitActive('McAfee Agent','McAfee Agent 的安装已成功完成。')
ControlClick('McAfee Agent','McAfee Agent 的安装已成功完成。','Button1','left')
2种方法(#17)
Run("C:\wodewyc\FramePkg.exe")



While 1



        Sleep(100)



        If WinExists('McAfee Agent','McAfee Agent 的安装已成功完成。') Then



                WinActivate('McAfee Agent','McAfee Agent 的安装已成功完成。')



                Send('{enter}')



                Exit



        EndIf


WEnd
感谢大家对小弟的帮助。谢谢了。

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-9-9 21:17:36 | 显示全部楼层
if not WinActive(xxx) then WinActivate(xxx)

别用错了。

评分

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

查看全部评分

 楼主| 发表于 2010-9-9 21:40:21 | 显示全部楼层
不好意思,我的AU3是这么写的,是我打错了。

  程序运行中,打开一个文件夹(处于激活),之后目标窗口弹出,且被激活(文件窗口标题栏由深蓝变为浅蓝色),但是到send处还是无法继续。  关闭或最小化文件夹窗口后,程序继续运行。。。
 楼主| 发表于 2010-9-9 21:48:05 | 显示全部楼层


哪里有错误呢?

本帖子中包含更多资源

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

×
发表于 2010-9-9 23:43:32 | 显示全部楼层
一个利用多线程的例子
http://www.autoitx.com/thread-18182-1-1.html
发表于 2010-9-9 23:50:56 | 显示全部楼层
WinActive('Mcafee Agent','确定') 这句不对,看帮助

WinActive ( "窗口标题" [, "窗口文本"] )
应该这么写,
WinActive('Mcafee Agent','Mcafee Agent 的安装已成功完成。')
发表于 2010-9-10 00:44:08 | 显示全部楼层
LS应该是正解
发表于 2010-9-10 08:08:53 | 显示全部楼层
根本不用IF就可以。。代码写错了
 楼主| 发表于 2010-9-10 09:05:44 | 显示全部楼层
回复 6# lixiaolong

嗯,我知道应该写窗口文本,后面改成'Mcafee Agent 的安装已成功完成。' 问题依然存在。

弹出了目标窗口,但就是不发送“确定”。 必须把其它窗口都关掉。。才能执行。
发表于 2010-9-10 09:18:45 | 显示全部楼层
可以试用一下Controlclick
 楼主| 发表于 2010-9-10 09:33:20 | 显示全部楼层
本帖最后由 superpangya 于 2010-9-10 10:03 编辑

回复 10# tankwu

谢谢啊,,问题解决了,不过我还是想知道,用我的方法怎么解决问题。。
发表于 2010-9-10 09:38:37 | 显示全部楼层
回复 5# lixiaolong

谢谢你,那个例子真棒!
发表于 2010-9-10 09:55:15 | 显示全部楼层
if not winactive (xxx)   then winactivate(xxx)
winwaitactivate(xxx)
send(xxxx)

其中 winwaitactivate(xxx) 的使用应该确定窗口肯定会从不激活到激活状态的时候使用,
所以比较好的方法当然是直接发送消息到指定控件,而非等待激活后使用send
 楼主| 发表于 2010-9-10 10:03:04 | 显示全部楼层
回复 13# onlonely

f not winactive (xxx)   then winactivate(xxx)
send(xxxx)
是这样吗?  试过了,还是不行,而且,send命令不会等待窗口。
发表于 2010-9-10 10:04:03 | 显示全部楼层
本帖最后由 lixiaolong 于 2010-9-10 10:13 编辑

回复 9# superpangya

不需要WinActivate

看这个
Run("FramePkg.exe")
        Sleep(10000)
                If WinActive('McAfee Agent','McAfee Agent 的安装已成功完成。') Then
                        Send("{ENTER}")
        EndIf
这个代码为什么不成功那?
因为 Sleep(10000) ,如果10秒后没有出现'McAfee Agent','McAfee Agent 的安装已成功完成。'的窗口就关闭了
你把 Sleep(10000) 改为更长时间就可以关闭 比如 Sleep(30000)

但这样浪费时间,这么写合理,利用循环监视窗口
Run("FramePkg.exe")

While 1
        Sleep(100)
                If WinActive('McAfee Agent','McAfee Agent 的安装已成功完成。') Then
                        Send("{ENTER}")
                        Exit
        EndIf
WEnd
多看看帮助,完后理解,理解不了问问,我也是干学习AU3
什么东西都一样,先学习基本,把基本搞好你就是一流!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-3 14:36 , Processed in 0.102107 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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