【问题标题】:Supress pop-up with VB 2008 Express Edition使用 VB 2008 Express Edition 抑制弹出窗口
【发布时间】:2009-10-22 19:17:54
【问题描述】:

最近我们卧室的收音机坏了,因此我的太太现在通过她的笔记本电脑收听各种广播电台。她抱怨说访问各个页面并单击“收听”链接有点痛苦。 (自我提醒:必须购买新收音机!)

与此同时,我在 VB 2008 Express 中制作了一个“广播播放器”,它只不过是我创建的“播放器”左侧的 6 个按钮和右侧的 Web 浏览器控件.

点击每个按钮链接到她想收听的电台的相关播放器。 (作为 VB 和编程的新手,我对我目前所取得的成就感到非常自豪!!)

无论如何,我链接到的一个站会给出“您确定要离开此页面吗”提示:这个:

http://www.mygoldmusic.co.uk/

嗯,反正就是网站首页,实际播放器在这里:

(哎呀,我好像只能发一个链接!实际播放器会在点击“收听”按钮时打开,很抱歉很痛苦!)

我的问题是:有没有办法在 VB 中抑制这条消息,甚至自动回答 OK?

我链接的其他网站不显示此消息,他们只是很高兴地离开。在提示上单击“确定”也不是什么难事,我听到你说,但为了可用性,我希望它在没有提示的情况下离开站点/播放器。

请记住,我使用的是 Microsoft Visual Basic 2008 Express Edition。 (我这么说是因为我遇到过很多网站告诉你如何使用 JavaScript,而不是 VB!)

我已经到了认为它无法完成的地步,但希望如此!

任何帮助/建议将不胜感激。而且,很抱歉这个冗长的问题。希望它能为您提供有关我正在努力实现的目标的足够信息。

再次提前致谢。 J.

【问题讨论】:

标签: vb.net popup suppress


【解决方案1】:

我能想到的唯一方法是在 WebBrowser 控件中实际修改页面的 DOM。当“window.onunload”事件触发时,该弹出窗口正在加载。您应该能够通过修改 DOM 来覆盖此行为。

HTML 文档 DOM(文档对象模型,本质上是页面结构的对象图)存储在 WebBrowser.HTMLDocument 属性中。不幸的是,该特定属性不适用于 .NET 版本。但是它对 COM 可用,因此通过一些非常丑陋和混乱的代码,您可能能够抑制该事件。

以下代码应该能够访问包含 HTML DOM 的 COM 属性。返回的类型是 IHTMLDocument2,尽管您会注意到该类本身将返回一个对象。您可能需要添加对 mshtml.dll 的引用,以使 IHTMLDocument2 接口以合理的方式访问 this 的属性。

Dim domDocument As IHTMLDocument2 = webBrowser.HtmlDocument.DomDocument

然后您可以访问 OnUnload 事件(它位于“window”元素上,位于文档上方)。不幸的是,这里的情节有点变厚(我确实说过它会很丑),因为您需要将 IDispatch 对象传递给 onunload 事件。我从未专门这样做过,但我在以下链接中找到了一篇文章,其中提供了一些示例,应该为您指明正确的方向:http://blogs.msdn.com/cgarcia/archive/2009/08/28/handling-dom-events-in-a-c-activex.aspx

您应该能够遵循类似的方法,但只需在处理程序方法中什么都不做,应该抑制您收到的 javascript 警报。

【讨论】:

  • 嗨 Ryan 使用我的 WebBrowser1 控件中的代码返回错误“类型 IHTMLDocument2 未定义”我想这与您包含“您可能需要添加对 mshtml.dll 的引用”有关让 IHTMLDocument2 接口以合理的方式访问它的属性。”不太确定如何添加对 mshtml.dll 的引用 - 不过我会继续尝试消除它。我也会看看我可以从你发布的链接中收集到什么。任何进一步的输入都会很棒。如果没有,那太好了,我最终会到达那里!谢谢你的帮助。贾斯汀。
【解决方案2】:

获取对话框的句柄并销毁它。使用 FindWindow 并向其发送 WM_CLOSE 消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多