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

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: arcticir, tmplinshi

youwantme
Posts: 47
Joined: 11 May 2015, 21:27

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

27 May 2015, 04:21

比如:

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中浏览下一级网页,请问该如何处理?

感谢!
Last edited by youwantme on 28 May 2015, 02:31, edited 1 time in total.
tmplinshi
Posts: 1561
Joined: 01 Oct 2013, 14:57

Re: Gui加载IE,如何处理弹出式网页?

27 May 2015, 14:37

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
youwantme
Posts: 47
Joined: 11 May 2015, 21:27

Re: Gui加载IE,如何处理弹出式网页?

27 May 2015, 19:17

非常感谢!顺带把我关于如何屏蔽网页脚本错误的疑问也一并解决了。
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
youwantme
Posts: 47
Joined: 11 May 2015, 21:27

Re: Gui加载IE,如何处理弹出式网页?

27 May 2015, 20:11

运行代码时,提醒这一句出错:

cancel[] := true ; 取消弹出新窗口

提示信息为:Error: 0x8002000E - 无效的参数数目

运行结果是:弹出网页在原wb控件打开了,但是网页也弹出来了,也就是取消弹出新窗口没生效。

能否麻烦兄台帮忙看一下是什么原因?谢啦!

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
youwantme
Posts: 47
Joined: 11 May 2015, 21:27

Re: Gui加载IE,如何处理弹出式网页?

28 May 2015, 00:30

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

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
Posts: 1561
Joined: 01 Oct 2013, 14:57

Re: Gui加载IE,如何处理弹出式网页?

28 May 2015, 01:28

好吧,看来我以后回复还是得尽量啰嗦一点。。cancel[] := true 需要 AHK 版本 v1.1.17 以上。
话说,你们都不用最新版的啊。。我看到有新版,都会去看看更新了什么内容,并立即下载更新的。
youwantme
Posts: 47
Joined: 11 May 2015, 21:27

Re: Gui加载IE,如何处理弹出式网页?

28 May 2015, 02:30

啊。。。原来是这个原因。

我还以为自己用的是最新的呢,不久前才更新到 1.1.15 的

看来要赶着更新才行,呵呵
tmplinshi wrote:好吧,看来我以后回复还是得尽量啰嗦一点。。cancel[] := true 需要 AHK 版本 v1.1.17 以上。
话说,你们都不用最新版的啊。。我看到有新版,都会去看看更新了什么内容,并立即下载更新的。
tmplinshi
Posts: 1561
Joined: 01 Oct 2013, 14:57

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

06 Jun 2015, 04:12

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

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

Code: Select all

class WB_events
{
    NewWindow3(ppDisp, Cancel, dwFlags, bstrUrlContext, bstrUrl, WB) {
        cancel[] := true ; 取消弹出新窗口
        WB.Navigate(bstrUrl)
    }
}
youwantme
Posts: 47
Joined: 11 May 2015, 21:27

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

09 Jun 2015, 21:19

好!又节省一行 :)
tmplinshi wrote:才知道可以在事件函数中指定“对象”参数。这样就不需要写 global WB 了。

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

Code: Select all

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

Return to “请求帮助”

Who is online

Users browsing this forum: No registered users and 4 guests