找回密码
 加入
搜索
查看: 1468|回复: 17

[AU3基础] [已解决]请教如何捕获Web浏览器退出时的系统消息

[复制链接]
发表于 2022-4-18 10:05:58 | 显示全部楼层 |阅读模式
本帖最后由 smooth 于 2022-4-26 21:46 编辑

我想在Web浏览器退出之后,执行一些代码,但是Web浏览器不用_IECreate、_IEAttach等这些函数来打开的,不知道退出时,是否有对应的Windows消息呢?如果有的话,请教如何捕呢?如果没有,有没有其他更好的办法来判断Web的退出呢?
前提条件:在用Web浏览器打开目标网址时,窗口会由出现,再消失(前台看不出来),再出现,进程也会由出现,再消失,再出现(IE和Edge还不一样)。所以无法简单的用判断窗口状态或者进程的有无来实现。这个网址是:
https://ebanksent.spdb.com.cn/newent/gb/login/prof.jsp
从打开到关闭,IE的进程变化:    -17832856-1856-1
从打开到关闭,Edge的进程变化:-17832-17832-1

我这几天在研究用Web浏览器的进程来判断,获取进程或者窗口的变化存入数组是可以的,但是很这个时间很难把握,就是有时候我打开这个网址,刚登录进去,就执行代码,而不是等我关闭网页的时候。所以只好想别的办法。麻烦大佬们指点一下思路,谢过。


发表于 2022-4-18 22:18:43 | 显示全部楼层
怎么看起来像要干坏事的样子...
 楼主| 发表于 2022-4-18 23:07:13 | 显示全部楼层
本帖最后由 smooth 于 2022-4-18 23:10 编辑
邪恶海盗 发表于 2022-4-18 22:18
怎么看起来像要干坏事的样子...

能干啥坏事,做了个自动截图的脚本,想实现在退出网银之后,自动弹起脚本,并打开截图文件存放的目录。

实在没有搞懂,进程的变化确实是这样的,我现在是获取最后的-1,就是退出之后检测不到进程返回的-1。但是不知道为什么,我打开了网址,到了输入密码的地方,如果我停留时间比较长,然后再输入密码登录进去,马上执行相应的代码,根本就不是等窗口关闭再执行。
发表于 2022-4-19 13:05:25 | 显示全部楼层
操作的就不是同一个窗口。不要经常调用 Win* 函数时使用标题字符串参数。
 楼主| 发表于 2022-4-19 22:10:19 | 显示全部楼层
afan 发表于 2022-4-19 13:05
操作的就不是同一个窗口。不要经常调用 Win* 函数时使用标题字符串参数。

A大,不使用标题,那使用啥?

你说的操作的不是同一个窗口,这个我理解,因为进程都不一样。可是它一直在变化,根本就搞不到最后关闭的那个窗口,因为每次登陆,窗口的变化数量,还不一样。
发表于 2022-4-21 10:13:00 | 显示全部楼层
smooth 发表于 2022-4-19 22:10
A大,不使用标题,那使用啥?

你说的操作的不是同一个窗口,这个我理解,因为进程都不一样。可是它一 ...

用标题捕获,进行判断,取得正确的窗口,拿到句柄。直到最后,始终使用该句柄操作。
 楼主| 发表于 2022-4-21 10:53:16 | 显示全部楼层
本帖最后由 smooth 于 2022-4-21 10:56 编辑
afan 发表于 2022-4-21 10:13
用标题捕获,进行判断,取得正确的窗口,拿到句柄。直到最后,始终使用该句柄操作。

登录过程中,窗口会消失一到两次,但是窗口的标题、句柄,都是一样的,没有变,当然,消失的时候,为0。

我想设置一个变量,窗口未出现的时候,设置为FALSE,当检测到窗口出现了,改为TRUE。然后检测不到窗口了,就执行指定代码。可是就是由于登录的过程中,消失几次(不定),就没有办法判断窗口什么时候是用户自己关闭的。
发表于 2022-4-21 10:57:04 | 显示全部楼层
smooth 发表于 2022-4-21 10:53
登录过程中,窗口会消失一到两次,但是窗口的标题、句柄,都是一样的,没有变。如果变了就好判断窗口是否 ...

跟你讲的都是关键,自己理解吧。
 楼主| 发表于 2022-4-21 11:06:12 | 显示全部楼层
afan 发表于 2022-4-21 10:57
跟你讲的都是关键,自己理解吧。

没有那么简单的,可能是你没有理解我的使用需求以及实际的环境。

从某种意义上来说,窗口都是同一个窗口,因为标题和句柄都一样的,不用判断哪个是正确的,换句话说,都是正确的,只是由于它自己会自动消失几次(次数不定)再出现,导致你没有办法判断哪次的消失是用户关闭的。
发表于 2022-4-21 11:17:27 | 显示全部楼层
smooth 发表于 2022-4-21 11:06
没有那么简单的,可能是你没有理解我的使用需求以及实际的环境。

从某种意义上来说,窗口都是同一个窗 ...

句柄是唯一的,消失了还会重现句柄?……
你所谓的不简单,在稍有经验的手里也就几分钟的事,呵呵
 楼主| 发表于 2022-4-21 11:28:50 | 显示全部楼层
本帖最后由 smooth 于 2022-4-21 11:38 编辑
afan 发表于 2022-4-21 11:17
句柄是唯一的,消失了还会重现句柄?……
你所谓的不简单,在稍有经验的手里也就几分钟的事,呵呵

是的,窗口消失之后,句柄也消失了。之后再出来的窗口,句柄还是原来的句柄。如果句柄不一样,就好搞多了。这样,我把检测到的句柄变化情况,写入一个数组发上来。

注:上面的截图,是从未登录,到登录,最后用户关闭网页,句柄的变化情况。上图不是绝对的,有时候不是这样,会多消失一到两次,没有规律。

本帖子中包含更多资源

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

×
发表于 2022-4-21 11:51:36 | 显示全部楼层
smooth 发表于 2022-4-21 11:28
是的,窗口消失之后,句柄也消失了。之后再出来的窗口,句柄还是原来的句柄。如果句柄不一样,就好搞多了 ...

好吧,最后再回你一贴。
你所谓的消失是你认为的消失,没有捕获到不代表消失,而是你用了错误的检测方法。
如果你用的是句柄,那么除非窗口被关闭,句柄被释放,否则它一直存在。
IsHWnd(句柄) 验证你的消失。

 楼主| 发表于 2022-4-21 11:58:45 | 显示全部楼层
本帖最后由 smooth 于 2022-4-21 12:00 编辑
afan 发表于 2022-4-21 11:51
好吧,最后再回你一贴。
你所谓的消失是你认为的消失,没有捕获到不代表消失,而是你用了错误的检测方法 ...

加了IsHWnd,返回0,不是消失,是啥,迷糊了。

本帖子中包含更多资源

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

×
发表于 2022-4-21 12:04:48 | 显示全部楼层
smooth 发表于 2022-4-21 11:58
加了IsHWnd,返回0,不是消失,是啥,迷糊了。

你自己对照你上面的图看。IsHWnd(0x00000000) 不是0还是1不成!
不用回我,上面说了不再回复。
 楼主| 发表于 2022-4-21 13:02:17 | 显示全部楼层
你不清楚我要实现什么功能,不纠结了。只能采用截图然后识别文字来判断了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-28 20:17 , Processed in 0.078663 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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