1

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

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

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

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

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

嗯,这就是网站的主页,实际播放器在这里:

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

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

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

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

我已经到了认为它不能完成的地步,但这里有希望!

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

再次提前感谢。J。

4

2 回答 2

0

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

于 2009-12-16T20:03:31.557 回答
0

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

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

于 2009-10-22T19:47:07.357 回答