Подавить всплывающее окно с VB 2008 Express Edition - PullRequest
1 голос
/ 22 октября 2009

Недавно в нашей спальне сломалось радио, и в результате моя миссис теперь слушает различные радиостанции через свой ноутбук. Она стонет, что посещение различных страниц и нажатие на ссылку «прослушать» немного болезненно. (Примечание для себя: должны купить новое радио!)

Тем временем я сделал «радио-проигрыватель» в VB 2008 Express, который представляет собой не более чем 6 кнопок на левой стороне «плеера», который я создал, и элемент управления веб-обозревателя с правой стороны. .

При нажатии каждой кнопки ссылки на соответствующего игрока станции, которую она хочет слушать. (Будучи новичком в VB и программировании, я очень горжусь тем, чего я достиг до сих пор !!)

В любом случае, одна станция, на которую я делаю ссылку, выдает запрос «Вы уверены, что хотите выйти из этой страницы?»: Эта:

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

Ну, в любом случае, это домашняя страница сайта, фактический игрок здесь:

(Ой, кажется, я могу опубликовать только одну ссылку! Фактически игрок открывает по нажатию кнопки «прослушать», извините за боль!)

У меня вопрос: есть ли способ подавить это сообщение в VB, или даже как-то с автоматическим ответом? OK?

На других сайтах, на которые я ссылался, это сообщение не отображается, они просто удачно перемещаются. Как я слышал, щелкнув «ОК» в приглашении, вы не столкнетесь с большими трудностями, но в целях удобства использования я просто хотел бы, чтобы он перемещался от сайта / плеера без запроса.

Помните, я использую Microsoft Visual Basic 2008 Express Edition. (Я говорю это, потому что я сталкивался с множеством сайтов, которые говорят вам, как сделать это с помощью JavaScript, но не VB!)

Я дошел до мысли, что это невозможно, но вот надеюсь!

Любая помощь / совет будет принята с благодарностью. И, извините за длинный вопрос. Надеюсь, это даст вам достаточно информации о том, чего я пытаюсь достичь.

Еще раз спасибо заранее. J.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2009

Получить дескриптор к диалогу и уничтожить его. Используйте FindWindow и отправьте ему сообщение WM_CLOSE .

0 голосов
/ 22 октября 2009

Единственный способ, которым я могу придумать, - это на самом деле изменить DOM страницы в элементе управления WebBrowser. Это всплывающее окно загружается при срабатывании события window.onunload. Вы должны иметь возможность изменить это поведение, изменив DOM.

HTML-документ DOM (объектная модель документа, по существу, граф объектов структуры страницы) хранится в свойстве WebBrowser.HTMLDocument. К сожалению, это конкретное свойство недоступно для версии .NET. Однако он доступен для COM, поэтому с помощью очень уродливого и грязного кода вы сможете подавить событие.

Следующий код должен иметь возможность доступа к свойству COM, содержащему HTML DOM. Возвращаемый тип - IHTMLDocument2, хотя вы заметите, что сам класс вернет объект. Возможно, вам потребуется добавить ссылку на mshtml.dll, чтобы интерфейс IHTMLDocument2 получил доступ к его свойствам разумным способом.

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.

...