Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
bladerender
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 9
1

WebBrowser переприсвоить другому WebBrowser. и потом первый закрыть

11.05.2014, 21:31. Просмотров 1262. Ответов 5
Метки нет (Все метки)

Задача такая. В отдельной форме (Форма2), которая открывается ShowDialog() есть визуальный обычный компонент WebBrowser.
В этом WebBrowser открывается страница входа на сайт. Я ввожу туда логин и пароль и нажимаю войти.

Задача в том, что после того, как вход выполнится, я должен закрыть эту Форму2, а этот "Войденный браузер" оставить себе, потому что когда он войденный,
я могу на него отправлять разные ссылки и они будут открываться. А на невойденном браузере будет ругаться на отсутствие права доступа.

Что я делаю. На Форме1 у меня есть невизуальный
public WebBrowserWithCridentials;

Я создаю
Form2 form2 = new Form2 (Form1);
Form2..ShowDialog();


Браузер загружает то что я хочу, я воожу логин/пароль и нажимаю войти.
Дожидаюсь, пока на ФОрме2 у браузера срабатывает DocumentCompleted
{
Form1.WebBrowserWithCridentials = this.WebBrowser;
this.Close();
}



Но вот беда:
1. Когда срабатывает закрытие формы2, то какого-то открывается виндовый Internet Explorer и пытается открыть тот линк, который я грузил на Форме2. Я его этого не просил )))
2. И еще большая беда. На ФОрме1 в WebBrowserWithCridentials у нас null; Ничиво нипанимаю. "Доступ к ликвидированному объекту невозможен."

Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2014, 21:31
Ответы с готовыми решениями:

Закрыть WebBrowser не закрывая форму
По нажатию кнопки через webbrowser открывается определённая ссылка, есть ли способ закрыть...

Нюанс с контролом webBrowser -все webBrowser's подхватывают куки
Всем привет! Ребят подскажите такое: (во всех веб браузерах у меня открывается по умолчанию...

WebBrowser. Как получить Html код страницы открытой в "webBrowser" в правильной кодировке?
Пробую получить Html код страницы открытой в "webBrowser". public string GetHTMLCodPage() ...

Сделать баннер, через WebBrowser. Или по другому.
Народ подскажите, как сделать баннер? Чтобы при щелчке по баннеру он не переходил внутри WebBrowser...

Delphi WebBrowser Получить HTML сайта не отображая сайт в WebBrowser
На некоторых сайтах такую шляпу вешают, что они неприятны, но тем не менее могут содержать что-то...

5
Streletz
290 / 228 / 61
Регистрация: 07.04.2014
Сообщений: 1,483
11.05.2014, 21:51 2
Цитата Сообщение от bladerender Посмотреть сообщение
И еще большая беда. На ФОрме1 в WebBrowserWithCridentials у нас null; Ничиво нипанимаю. "Доступ к ликвидированному объекту невозможен."
В этом нет ничего удивительного. Вы всего лишь навсего присвоили в WebBrowser'у на 1й форме ссылку на тот, что был на 2й. То есть, осуществили поверхностное копирование.
В данном случае необходимо глубокое копирование. К сожалению, WebBrowser не реализует интерфейс IClonable. Поэтому, метода Clone у него нет и необходимо реализовывать глубокое копирование вручную.
0
bladerender
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 9
11.05.2014, 22:15  [ТС] 3
А может тогда от браузера к браузеру копировать "кеш" с пермишенами, которые он получил входя на сайт?
А где WebBrowser их хранит? В каком свойстве?

Добавлено через 18 минут
Короче у WebBrowser-ов один кеш на всех в пределах екземпляра программы. Только что попробовал.
Клонировать ничего не нужно.
А зачем открываеться IExplorer?
0
Streletz
290 / 228 / 61
Регистрация: 07.04.2014
Сообщений: 1,483
11.05.2014, 22:30 4
Цитата Сообщение от bladerender Посмотреть сообщение
Короче у WebBrowser-ов один кеш на всех в пределах екземпляра программы. Только что попробовал.
Клонировать ничего не нужно.
А зачем открываеться IExplorer?
Дело в том, что WebBrowser это всего лишь на всего обёртка над COM-интерфейсом IE. То есть, при открытии страницы в WebBrowser, её на самом деле открывает IE, который работает "на заднем плане".
Видимо, "с точки зрения IE", действия программы (уничтожение WebBrowser-а 2й формы с открытой страницей) выглядят "не совсем корректно". Поэтому, после этого IE открывает восстановленную страницу.
Можно решить проблему следующим образом. Сделать WebBrowser 1й формы public и при выполнении операции входа на 2й форме, обращаться к нему.
0
bladerender
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 9
11.05.2014, 22:44  [ТС] 5
Я пробовал. Передавал с первой формы во вторую ссылку на браузер, и потом присваивал браузеру на второй форме. и потом уже им открывал страницы. Все равно когда закрывается, то браузер на первой странице становиться null (что в принципе логично).

ПОБОРОЛ: Streletz натолкнул меня на мысль, что что-то остается недогруженным. Например какой-то скрипт не может выполнится. Вот оно и не воспринимает страницу как совсем догруженую, хотя имент "DocumentComplete" срабатывает.
Но если перед закрытием формы сделать webBrowser.url = new URL("about:blank"),
и потом Form2.Close(), то всё ОК, IE не открывается, ибо "about:blank" загружается типо мгновенно и полностью. Обманули )))
0
Streletz
290 / 228 / 61
Регистрация: 07.04.2014
Сообщений: 1,483
11.05.2014, 22:49 6
ПОБОРОЛ
Поздравляю!
Цитата Сообщение от bladerender Посмотреть сообщение
Я пробовал. Передавал с первой формы во вторую ссылку на браузер, и потом присваивал браузеру на второй форме. и потом уже им открывал страницы. Все равно когда закрывается, то браузер на первой странице становиться null (что в принципе логично).
Вообще-то в моём предыдущем посте речь шла не об этом. Но, судя по всему, уже не суть важно.
0
11.05.2014, 22:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2014, 22:49

Открыть новую страницу из WebBrowser-а не в IE, а во втором WebBrowser-е
Задумка такова: Есть 2 TWebbrowser на форме. В первом веббраузере есть ссылка, при нажатии на...

Нужна создать матриц потом вывести первый столп, последний, среди Потом вывести их максимум vb 6.0
Я так делал но дальше уже не могу помогите Если у кого картинка не отображает

Отправить сообщение другому приложению (закрыть его)
Задача - получить хендл программы которую запускаешь и в нужный момент ее закрыть. я запускаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru