ttmv2019sx 发表于 2021-3-9 13:55:12

gyp2000 发表于 2021-3-9 13:49
不过调用IE创建的消息框,那就不属于单线程了。消息框应该是ie触发的。AU3应该可以直接等待到这个窗口。

AU3等不到呀。一直在哪个窗口中,没有办法获取,就如我上面提交的在帮助文档中,看到的例子,一样是下不去的。没有办法确定。

gyp2000 发表于 2021-3-9 13:55:52

如果类名特殊,还可以枚举所有窗口,查询到目标窗口,然后操作。

ttmv2019sx 发表于 2021-3-9 13:56:20

gyp2000 发表于 2021-3-9 13:40
单线程的程序,触发一个消息框,如果没办法设置超时返回,那么就会暂停等待。无解,只能提前拉起一个进程处 ...

是的。所以A版说过了,要么是多进程,要么写一个简单的进程处理,,我现在就是写了一个进程专对这个窗来处理的,只不过。我看到上面另一个超版,有图说,可以,,所以奇怪了。就在等他的回复,呵呵

afan 发表于 2021-3-9 14:24:09

ttmv2019sx 发表于 2021-3-9 13:56
是的。所以A版说过了,要么是多进程,要么写一个简单的进程处理,,我现在就是写了一个进程专对这个窗来 ...

他那是 ,一定是当前弹出的?不说了。

Xxkwwz 发表于 2021-3-9 15:58:53

我试了一下,确实不太稳定,有时可以,有时不行,用循环的话好一点,希望可以帮助到你

gyp2000 发表于 2021-3-9 22:18:40


很多进程都会弹出个CLASS:#32770类的状态未知的窗口
用窗口等待,很可能会查询到非目标窗口 然后返回结果,向不可见窗口发送命令
CLASS:#32770 类如果没有唯一窗口标题,那就没办法等待的,只能枚举窗口然后判断是是不是目标进程弹出的。

gyp2000 发表于 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, "", "", "{Enter}")

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

ControlClick("", "", "")
Sleep(1000)

_IEQuit($oIE)

gyp2000 发表于 2021-3-9 23:57:10

刚才测试了下,开始你等不到窗口的主要问题是 窗口标题留空导致的。
只要是唯一窗口标题 怎么写都可以等待到窗口
WinWait("来自网页的消息", "")
Sleep(500)
ControlClick("来自网页的消息", "", "")
或者:
WinWait("来自网页的消息", "ExampleFormSubmitted")
Sleep(500)
ControlClick("来自网页的消息", "ExampleFormSubmitted", "")
或者:
WinWait("", "ExampleFormSubmitted")
Sleep(500)
ControlClick("", "ExampleFormSubmitted", "")
参数越多 可靠性越高。降低误判的可能。

ttmv2019sx 发表于 2021-3-10 08:01:36

gyp2000 发表于 2021-3-9 22:35
可用的代码:
#include



看到了,你的这个实便是成功的,不过自建的IE是不会成功,看来。只能是简单的用第二个进程处理了,多建一个判断程序,谢谢你了,因为我判断窗口也是写了2个条件的,只有,开启第二程序才是可以的,和A版说的一样,IE自弹窗口,等待了,除了多进程,或者是第二个程序来判断,
页: 1 [2]
查看完整版本: 关于IE网页点提交后,弹出来的窗口无法捕获!【已解决】