【已解决】Gui加载IE,如何处理弹出式网页?

问答中心分类: 问题【已解决】Gui加载IE,如何处理弹出式网页?
凤舞凤舞 用户 提问于 8月 以前

比如:

点击百度新闻里面的新闻链接,就会另外弹出一个网页,但这个网页已经不在那个 Gui 范围内了。。。。

我想继续在Gui中浏览下一级网页,请问该如何处理?

感谢!

打赏作者
3 个回答
最佳回答
凤舞凤舞 用户 回答于 8月 以前

才知道可以在事件函数中指定“对象”参数。这样就不需要写 global WB 了。

方法是在参数的最后一个参数指定“对象”参数:

class WB_events
{
NewWindow3(ppDisp, Cancel, dwFlags, bstrUrlContext, bstrUrl, WB) {
cancel[] := true ; 取消弹出新窗口
WB.Navigate(bstrUrl)
}
}
打赏作者
凤舞凤舞 用户 回答于 8月 以前
Gui, Margin, 0, 0
Gui Add, ActiveX, w800 h500 vWB, Shell.Explorer
Gui, Show
ComObjConnect(WB, WB_events)
WB.Silent := True ; 这一句可以避免一些网页弹出脚本错误
WB.Navigate("http://internet.baidu.com/")
Return

class WB_events
{
NewWindow3(ppDisp, Cancel, dwFlags, bstrUrlContext, bstrUrl)
{
global WB
cancel[] := true ; 取消弹出新窗口
WB.Navigate(bstrUrl)
}
}

GuiClose:
ExitApp
打赏作者
凤舞凤舞 用户 回答于 8月 以前

这个问题我已经在其他网站找到了解决办法,亲测通过,转述如下:


cancel := true 是错误的写法,true在com里是-1,cancel是short不是int,所以应该是:

NumPut(-1, ComObjValue(Cancel), "short")

 


Gui, Margin, 0, 0
Gui Add, ActiveX, w800 h500 vWB, Shell.Explorer
Gui, Show
ComObjConnect(WB, WB_events)
WB.Silent := True ; 这一句可以避免一些网页弹出脚本错误
WB.Navigate("http://internet.baidu.com/")
Return

class WB_events
{
NewWindow3(ppDisp, Cancel, dwFlags, bstrUrlContext, bstrUrl)
{
global WB
NumPut(-1, ComObjValue(Cancel), "short") ; 取消弹出新窗口
WB.Navigate(bstrUrl)
}
}

GuiClose:
ExitApp
打赏作者