ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何用VBA获取IE浏览器弹出的alert窗口的提示消息

如何用VBA获取IE浏览器弹出的alert窗口的提示消息

作者:绿色风 分类: 时间:2022-08-17 浏览:184
楼主
xmyjk
Q:如何用VBA获取IE浏览器弹出的alert窗口的提示消息?
如下图所示图片和网页源代码:

 
  1. <html>
  2. <body onload = alert("wahaaaaaaaaaaaaaaa")>
  3. 我是演示文档**
  4. </body>
  5. </html>
A:思路分析:抓取网页的警告框的句柄,然后历遍其二级窗口(详情百度window窗口结构),提取文本,最后发送确认键。
注意:如上图,我的IE的弹出警告窗的标题栏是Windows Internet Explorer(一般为Windows Internet Explorer;来自网页的消息;安全警报;安全警告等等),请按情况修改下面的代码“hWnd = FindWindowEx(0&, 0&, vbNullString, ByVal "Windows Internet Explorer")这句”。
  1. Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As Any) As Long 'API抓窗口函数
  2. Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long 'api取窗口文本函数

  3. Option Explicit

  4. Sub t()
  5.     Dim hWnd&, i%, AllWndText$, fhwnd&
  6.     With CreateObject("InternetExplorer.Application") '创建IE对象
  7.         .Visible = True '可视
  8.         .Navigate ThisWorkbook.Path & "\1111.html" '激活网页
  9.         Do Until .ReadyState = READYSTATE_COMPLETE '待加载完毕
  10.            DoEvents
  11.         Loop
  12.         hWnd = FindWindowEx(0&, 0&, vbNullString, ByVal "Windows Internet Explorer") '抓取弹出警告框窗口
  13.         Dim wndtext$
  14.         wndtext = Space(512) '设置提取的文本变量
  15.         fhwnd = hWnd
  16.         hWnd = FindWindowEx(fhwnd, 0&, vbNullString, 0&) '寻找母窗口下级窗口

  17.         Do While hWnd > 0 '历遍
  18.             i = GetWindowText(hWnd, wndtext, 512) '取文本
  19.             If i Then AllWndText = AllWndText & Left(wndtext, i) & "-"
  20.             hWnd = FindWindowEx(fhwnd, hWnd, vbNullString, 0&) '继续历遍下个同级窗口
  21.         Loop
  22.         [a2] = Replace(AllWndText, Chr(0), "") '输出
  23.         SendKeys "~" '关闭弹出窗口
  24.     End With
  25. End Sub
注意,附件要下到硬盘加压缩运行。
弹出消息窗截取.zip
2楼
wudixin96
六身投地啊
3楼
水星钓鱼
牛B
4楼
老糊涂
学习
5楼
su0nils000
看了附件,主要是用api去获取窗口句柄和标题,还是比较简单的,不用弄一个下载包的,网页的弹窗不知道到底该如何获得其中的内容呢?api或xmlhttp之类都是在绕过问题,而不是解决问题....

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap