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

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

[复制链接]
 楼主| 发表于 2021-3-9 13:55:12 | 显示全部楼层
gyp2000 发表于 2021-3-9 13:49
不过调用IE创建的消息框,那就不属于单线程了。消息框应该是ie触发的。AU3应该可以直接等待到这个窗口。

AU3等不到呀。一直在哪个窗口中,没有办法获取,就如我上面提交的在帮助文档中,看到的例子,一样是下不去的。没有办法确定。
发表于 2021-3-9 13:55:52 来自手机 | 显示全部楼层
如果类名特殊,还可以枚举所有窗口,查询到目标窗口,然后操作。
 楼主| 发表于 2021-3-9 13:56:20 | 显示全部楼层
gyp2000 发表于 2021-3-9 13:40
单线程的程序,触发一个消息框,如果没办法设置超时返回,那么就会暂停等待。无解,只能提前拉起一个进程处 ...

是的。所以A版说过了,要么是多进程,要么写一个简单的进程处理,,我现在就是写了一个进程专对这个窗来处理的,只不过。我看到上面另一个超版,有图说,可以,,所以奇怪了。就在等他的回复,呵呵
发表于 2021-3-9 14:24:09 | 显示全部楼层
ttmv2019sx 发表于 2021-3-9 13:56
是的。所以A版说过了,要么是多进程,要么写一个简单的进程处理,,我现在就是写了一个进程专对这个窗来 ...

他那是 [CLASS:#32770] ,一定是当前弹出的?不说了。
发表于 2021-3-9 15:58:53 | 显示全部楼层
我试了一下,确实不太稳定,有时可以,有时不行,用循环的话好一点,希望可以帮助到你

本帖子中包含更多资源

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

×
发表于 2021-3-9 22:18:40 | 显示全部楼层

很多进程都会弹出个CLASS:#32770  类的状态未知的窗口
用窗口等待,很可能会查询到非目标窗口 然后返回结果,向不可见窗口发送命令
CLASS:#32770 类如果没有唯一窗口标题,那就没办法等待的,只能枚举窗口然后判断是是不是目标进程弹出的。
发表于 2021-3-9 22:35:48 | 显示全部楼层
ttmv2019sx 发表于 2021-3-9 13:56
是的。所以A版说过了,要么是多进程,要么写一个简单的进程处理,,我现在就是写了一个进程专对这个窗来 ...

可用的代码:
#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("[TITLE:来自网页的消息; CLASS:#32770]", "")
Sleep(500)

ControlClick("[TITLE:来自网页的消息; CLASS:#32770]", "", "[CLASS:Button; INSTANCE:1]")
Sleep(1000)

_IEQuit($oIE)
发表于 2021-3-9 23:57:10 | 显示全部楼层
刚才测试了下,开始你等不到窗口的主要问题是 窗口标题留空导致的。
只要是唯一窗口标题 怎么写都可以等待到窗口
WinWait("来自网页的消息", "")
Sleep(500)
ControlClick("来自网页的消息", "", "[CLASS:Button; INSTANCE:1]")
或者:
WinWait("来自网页的消息", "ExampleFormSubmitted")
Sleep(500)
ControlClick("来自网页的消息", "ExampleFormSubmitted", "[CLASS:Button; INSTANCE:1]")
或者:
WinWait("[TITLE:来自网页的消息; CLASS:#32770]", "ExampleFormSubmitted")
Sleep(500)
ControlClick("[TITLE:来自网页的消息; CLASS:#32770]", "ExampleFormSubmitted", "[CLASS:Button; INSTANCE:1]")
参数越多 可靠性越高。降低误判的可能。
 楼主| 发表于 2021-3-10 08:01:36 | 显示全部楼层
gyp2000 发表于 2021-3-9 22:35
可用的代码:
#include

看到了,你的这个实便是成功的,不过自建的IE是不会成功,看来。只能是简单的用第二个进程处理了,多建一个判断程序,谢谢你了,因为我判断窗口也是写了2个条件的,只有,开启第二程序才是可以的,和A版说的一样,IE自弹窗口,等待了,除了多进程,或者是第二个程序来判断,
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-17 15:41 , Processed in 0.072133 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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