找回密码
 加入
搜索
查看: 5860|回复: 23

[网络通信] 关于IE网页点提交后,弹出来的窗口无法捕获!【已解决】

[复制链接]
发表于 2021-3-9 12:54:41 | 显示全部楼层 |阅读模式
本帖最后由 ttmv2019sx 于 2021-3-9 15:18 编辑

我在自个的IE网页中操作,后有弹出窗口要点一下确定,但是用WinActivate  没有办法激活,导致无法用ControlClick来点击这个确定,
奇怪的是,我在确定的这个网页,把程序都关了,再打开一个新的捕获来操作,是可以被捕到,并且点击下去的,
原来的一直运行下来,到此处就不行,我把帮助文件,也拿出来试了也不行,不知道为什么,发现下面的文字为OK改成确定也是不行的,
这个是测试的时候用窗口器捕出来的,不知道是什么原因,有大神知道的吗!


; 与示例 1 相同, 但它不是使用单击,
; 它赋予元素焦点, 然后使用 ControlSend 发送输入.
; 当浏览器端的脚本程序与单击操作关联, 防止控件自动返回到您的代码时,
; 请使用此技术.

#include <IE.au3>

Local $oIE = _IE_Example("form")
Local $oSubmit = _IEGetObjByName($oIE, "submitExample")
Local $hWnd = _IEPropertyGet($oIE, "hwnd")
_IEAction($oSubmit, "focus")
ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")

; 等待警告窗口,然后点击"确定".
WinWait("", "ExampleFormSubmitted")
Sleep(2000)

ControlClick("", "ExampleFormSubmitted", "[CLASS:Button; TEXT:OK; Instance:1;]")
Sleep(2000)

_IEQuit($oIE)


发表于 2021-3-9 13:02:49 | 显示全部楼层
autoit是单线程。你是自建的ie进程,在等待点击时是暂停状态,因此不会响应之后的代码,这也是为什么另外另外执行一个au3进程是可以的。
论坛有很多方法,简单的创建一个新进程就行
 楼主| 发表于 2021-3-9 13:04:44 | 显示全部楼层
afan 发表于 2021-3-9 13:02
autoit是单线程。你是自建的ie进程,在等待点击时是暂停状态,因此不会响应之后的代码,这也是为什么另外另 ...

是的A版,我现在是用笨方法,就是在弹窗出现前,ShellExecute($sFilePath)  用这个命令,先把获取窗口的小程序起来,循环一下,然后,主程序就会自动继续下面的程序,弹窗出来了,然后就被提前起来的小程序,处理掉,然后小程序,自个也退出,主程序就可以继续下去了。
发表于 2021-3-9 13:06:51 | 显示全部楼层
ttmv2019sx 发表于 2021-3-9 13:04
是的A版,我现在是用笨方法,就是在弹窗出现前,ShellExecute($sFilePath)  用这个命令,先把获取窗口的 ...

那有什么问题?
 楼主| 发表于 2021-3-9 13:06:54 | 显示全部楼层
afan 发表于 2021-3-9 13:02
autoit是单线程。你是自建的ie进程,在等待点击时是暂停状态,因此不会响应之后的代码,这也是为什么另外另 ...

A版,很多方法,哪关键字搜什么呢,这个好像表达上不太好组织,搜多线程?
发表于 2021-3-9 13:08:43 | 显示全部楼层
我这边测试你的例子是没有问题的,只要类获取的正确
d:\Users\Desktop\TE)474(Q@A%CIZ9JH18P~1O.png

本帖子中包含更多资源

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

×
 楼主| 发表于 2021-3-9 13:10:03 | 显示全部楼层
afan 发表于 2021-3-9 13:06
那有什么问题?

就如你说的,看看论坛里,更好的办法呀,呵呵。
 楼主| 发表于 2021-3-9 13:10:26 | 显示全部楼层
Xxkwwz 发表于 2021-3-9 13:08
我这边测试你的例子是没有问题的,只要类获取的正确

我是执行后,弹窗哪边就停止了,不下去了。我是WIN10系统
发表于 2021-3-9 13:14:30 | 显示全部楼层
Xxkwwz 发表于 2021-3-9 13:08
我这边测试你的例子是没有问题的,只要类获取的正确

他的问题前几个字“我在自个的IE”
发表于 2021-3-9 13:15:39 | 显示全部楼层
ttmv2019sx 发表于 2021-3-9 13:10
就如你说的,看看论坛里,更好的办法呀,呵呵。

新手用多进程方式就行了。进阶可以用定时器。
 楼主| 发表于 2021-3-9 13:24:48 | 显示全部楼层
Xxkwwz 发表于 2021-3-9 13:08
我这边测试你的例子是没有问题的,只要类获取的正确

不是吧,还有这种事,我上面的便子是帮助中拿出来的,我测试到了,到了弹窗口后就不动了,你把你的代码发上来,我测试一下,你看可以吗,难道是WIN10的原因?
 楼主| 发表于 2021-3-9 13:25:26 | 显示全部楼层
Xxkwwz 发表于 2021-3-9 13:08
我这边测试你的例子是没有问题的,只要类获取的正确

而且,你的这个成功了,哪你的哪个窗口,是会被确定掉的吗?
 楼主| 发表于 2021-3-9 13:34:51 | 显示全部楼层
afan 发表于 2021-3-9 13:14
他的问题前几个字“我在自个的IE”

A版,但是看上面的超版的,图也是一样的操作呢,我没有看出不同呀。为什么他能获取,怪。
发表于 2021-3-9 13:40:53 来自手机 | 显示全部楼层
单线程的程序,触发一个消息框,如果没办法设置超时返回,那么就会暂停等待。无解,只能提前拉起一个进程处理这个消息框。
发表于 2021-3-9 13:49:38 来自手机 | 显示全部楼层
不过调用IE创建的消息框,那就不属于单线程了。消息框应该是ie触发的。AU3应该可以直接等待到这个窗口。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-17 17:05 , Processed in 0.085240 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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