Code: Select all
Gui, Margin, 0, 0
Gui Add, ActiveX, w800 h500 vWB, Shell.Explorer
Gui, Show
WB.Navigate("http://internet.baidu.com/")
点击百度新闻里面的新闻链接,就会另外弹出一个网页,但这个网页已经不在那个 Gui 范围内了。。。。
我想继续在Gui中浏览下一级网页,请问该如何处理?
感谢!
Moderators: tmplinshi, arcticir
Code: Select all
Gui, Margin, 0, 0
Gui Add, ActiveX, w800 h500 vWB, Shell.Explorer
Gui, Show
WB.Navigate("http://internet.baidu.com/")
Code: Select all
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
tmplinshi wrote:Code: Select all
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
tmplinshi wrote:Code: Select all
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
cancel := true 是错误的写法,true在com里是-1,cancel是short不是int,所以应该是:
NumPut(-1, ComObjValue(Cancel), "short")
Code: Select all
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
tmplinshi wrote:好吧,看来我以后回复还是得尽量啰嗦一点。。cancel[] := true 需要 AHK 版本 v1.1.17 以上。
话说,你们都不用最新版的啊。。我看到有新版,都会去看看更新了什么内容,并立即下载更新的。
Code: Select all
class WB_events
{
NewWindow3(ppDisp, Cancel, dwFlags, bstrUrlContext, bstrUrl, WB) {
cancel[] := true ; 取消弹出新窗口
WB.Navigate(bstrUrl)
}
}
tmplinshi wrote:才知道可以在事件函数中指定“对象”参数。这样就不需要写 global WB 了。
方法是在参数的最后一个参数指定“对象”参数:Code: Select all
class WB_events { NewWindow3(ppDisp, Cancel, dwFlags, bstrUrlContext, bstrUrl, WB) { cancel[] := true ; 取消弹出新窗口 WB.Navigate(bstrUrl) } }
Users browsing this forum: No registered users and 3 guests