[已解决]请教如何捕获Web浏览器退出时的系统消息
本帖最后由 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的进程变化: -1→7832→856→-1→856→-1
从打开到关闭,Edge的进程变化:-1→7832→-1→7832→-1
我这几天在研究用Web浏览器的进程来判断,获取进程或者窗口的变化存入数组是可以的,但是很这个时间很难把握,就是有时候我打开这个网址,刚登录进去,就执行代码,而不是等我关闭网页的时候。所以只好想别的办法。麻烦大佬们指点一下思路,谢过。
怎么看起来像要干坏事的样子... 本帖最后由 smooth 于 2022-4-18 23:10 编辑
邪恶海盗 发表于 2022-4-18 22:18
怎么看起来像要干坏事的样子...
能干啥坏事,做了个自动截图的脚本,想实现在退出网银之后,自动弹起脚本,并打开截图文件存放的目录。
实在没有搞懂,进程的变化确实是这样的,我现在是获取最后的-1,就是退出之后检测不到进程返回的-1。但是不知道为什么,我打开了网址,到了输入密码的地方,如果我停留时间比较长,然后再输入密码登录进去,马上执行相应的代码,根本就不是等窗口关闭再执行。
操作的就不是同一个窗口。不要经常调用 Win* 函数时使用标题字符串参数。 afan 发表于 2022-4-19 13:05
操作的就不是同一个窗口。不要经常调用 Win* 函数时使用标题字符串参数。
A大,不使用标题,那使用啥?
你说的操作的不是同一个窗口,这个我理解,因为进程都不一样。可是它一直在变化,根本就搞不到最后关闭的那个窗口,因为每次登陆,窗口的变化数量,还不一样。 smooth 发表于 2022-4-19 22:10
A大,不使用标题,那使用啥?
你说的操作的不是同一个窗口,这个我理解,因为进程都不一样。可是它一 ...
用标题捕获,进行判断,取得正确的窗口,拿到句柄。直到最后,始终使用该句柄操作。 本帖最后由 smooth 于 2022-4-21 10:56 编辑
afan 发表于 2022-4-21 10:13
用标题捕获,进行判断,取得正确的窗口,拿到句柄。直到最后,始终使用该句柄操作。
登录过程中,窗口会消失一到两次,但是窗口的标题、句柄,都是一样的,没有变,当然,消失的时候,为0。
我想设置一个变量,窗口未出现的时候,设置为FALSE,当检测到窗口出现了,改为TRUE。然后检测不到窗口了,就执行指定代码。可是就是由于登录的过程中,消失几次(不定),就没有办法判断窗口什么时候是用户自己关闭的。
smooth 发表于 2022-4-21 10:53
登录过程中,窗口会消失一到两次,但是窗口的标题、句柄,都是一样的,没有变。如果变了就好判断窗口是否 ...
跟你讲的都是关键,自己理解吧。 afan 发表于 2022-4-21 10:57
跟你讲的都是关键,自己理解吧。
没有那么简单的,可能是你没有理解我的使用需求以及实际的环境。
从某种意义上来说,窗口都是同一个窗口,因为标题和句柄都一样的,不用判断哪个是正确的,换句话说,都是正确的,只是由于它自己会自动消失几次(次数不定)再出现,导致你没有办法判断哪次的消失是用户关闭的。 smooth 发表于 2022-4-21 11:06
没有那么简单的,可能是你没有理解我的使用需求以及实际的环境。
从某种意义上来说,窗口都是同一个窗 ...
句柄是唯一的,消失了还会重现句柄?……
你所谓的不简单,在稍有经验的手里也就几分钟的事,呵呵 本帖最后由 smooth 于 2022-4-21 11:38 编辑
afan 发表于 2022-4-21 11:17
句柄是唯一的,消失了还会重现句柄?……
你所谓的不简单,在稍有经验的手里也就几分钟的事,呵呵
是的,窗口消失之后,句柄也消失了。之后再出来的窗口,句柄还是原来的句柄。如果句柄不一样,就好搞多了。这样,我把检测到的句柄变化情况,写入一个数组发上来。
注:上面的截图,是从未登录,到登录,最后用户关闭网页,句柄的变化情况。上图不是绝对的,有时候不是这样,会多消失一到两次,没有规律。
smooth 发表于 2022-4-21 11:28
是的,窗口消失之后,句柄也消失了。之后再出来的窗口,句柄还是原来的句柄。如果句柄不一样,就好搞多了 ...
好吧,最后再回你一贴。
你所谓的消失是你认为的消失,没有捕获到不代表消失,而是你用了错误的检测方法。
如果你用的是句柄,那么除非窗口被关闭,句柄被释放,否则它一直存在。
IsHWnd(句柄) 验证你的消失。
本帖最后由 smooth 于 2022-4-21 12:00 编辑
afan 发表于 2022-4-21 11:51
好吧,最后再回你一贴。
你所谓的消失是你认为的消失,没有捕获到不代表消失,而是你用了错误的检测方法 ...
加了IsHWnd,返回0,不是消失,是啥,迷糊了。
smooth 发表于 2022-4-21 11:58
加了IsHWnd,返回0,不是消失,是啥,迷糊了。
你自己对照你上面的图看。IsHWnd(0x00000000) 不是0还是1不成!
不用回我,上面说了不再回复。 你不清楚我要实现什么功能,不纠结了。只能采用截图然后识别文字来判断了。
页:
[1]
2