superpangya 发表于 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 NotWinActive('McAfee Agent','McAfee Agent 的安装已成功完成。') ThenWinActivate('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{:face (88):} 感谢大家对小弟的帮助。谢谢了。

republican 发表于 2010-9-9 21:17:36

if not WinActive(xxx) then WinActivate(xxx)

别用错了。

superpangya 发表于 2010-9-9 21:40:21

不好意思,我的AU3是这么写的,是我打错了。

程序运行中,打开一个文件夹(处于激活),之后目标窗口弹出,且被激活(文件窗口标题栏由深蓝变为浅蓝色),但是到send处还是无法继续。关闭或最小化文件夹窗口后,程序继续运行。。。

superpangya 发表于 2010-9-9 21:48:05



哪里有错误呢?

lixiaolong 发表于 2010-9-9 23:43:32

一个利用多线程的例子
http://www.autoitx.com/thread-18182-1-1.html

lixiaolong 发表于 2010-9-9 23:50:56

WinActive('Mcafee Agent','确定') 这句不对,看帮助

WinActive ( "窗口标题" [, "窗口文本"] )
应该这么写,
WinActive('Mcafee Agent','Mcafee Agent 的安装已成功完成。')

tankwu 发表于 2010-9-10 00:44:08

LS应该是正解

qq54222717 发表于 2010-9-10 08:08:53

根本不用IF就可以。。代码写错了

superpangya 发表于 2010-9-10 09:05:44

回复 6# lixiaolong

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

弹出了目标窗口,但就是不发送“确定”。 必须把其它窗口都关掉。。才能执行。

tankwu 发表于 2010-9-10 09:18:45

可以试用一下Controlclick

superpangya 发表于 2010-9-10 09:33:20

本帖最后由 superpangya 于 2010-9-10 10:03 编辑

回复 10# tankwu

谢谢啊,,问题解决了,不过我还是想知道,用我的方法怎么解决问题。。

6678720 发表于 2010-9-10 09:38:37

回复 5# lixiaolong

谢谢你,那个例子真棒!

onlonely 发表于 2010-9-10 09:55:15

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

其中 winwaitactivate(xxx) 的使用应该确定窗口肯定会从不激活到激活状态的时候使用,
所以比较好的方法当然是直接发送消息到指定控件,而非等待激活后使用send

superpangya 发表于 2010-9-10 10:03:04

回复 13# onlonely

f not winactive (xxx)   then winactivate(xxx)
send(xxxx)
是这样吗?试过了,还是不行,而且,send命令不会等待窗口。

lixiaolong 发表于 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
什么东西都一样,先学习基本,把基本搞好你就是一流!
页: [1] 2
查看完整版本: 【已解决】窗口激活的问题 有图 求解