взаимодействие IE и проги на VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

взаимодействие IE и проги на VB

Сообщение НиколайП » 22.12.2005 (Чт) 1:27

Программа ,написанная на VB ,обрабатывает вэб страницы и сохраняет в бд часть информации из этих страниц. Проблемма в очень медленном интернете, модемное подключение. На основной странице очень много ссылок, мне необходимо обрабатывать все эти ссылки, после каждой ссылки приходится возвращаться на начальную страницу,времени на возврат уходит очень много ... :(
Хотелось бы узнать возможно ли сделать что бы в IE , при нажатии на ссылку правой кнопкой мыши появлялся ,к примеру, пункт "отправить ссылку в мою программу", или хотя бы сделать так что бы контрол WebBrowser1, в программе, при возврате открывал страницу из кэша, а не загружал её из инета поновой ...
Если возможен первый вариант , тогда подскажите пожалуйсто как это можно реализовать.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.12.2005 (Чт) 14:17

Вариант первый.
Использовать winsock для загрузки текста страниц, а webbrowser не использовать.

Вариант второй.
Использовать два webbrowser - для начальной страницы и для текущей...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 22.12.2005 (Чт) 16:56

Вариант первый.
Использовать winsock для загрузки текста страниц, а webbrowser не использовать.

неприемлемо :(, пользователю программы необходимо видеть все рисунки и информацию на странице ...

я где то в инете находил информацию как можно в IE поставить свои кнопочки, но мне надо чуток другое ...

Вариант второй.
Использовать два webbrowser - для начальной страницы и для текущей...

вот по этому поводу надо подумать ... , есть ещё вариант - вывести в лист боксе все ссылки с этой страницы что бы не возвращаться ..., но первый вариант был бы идиальным, правда если можно такое реализовать :(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.12.2005 (Чт) 17:03

А как ты возвращаешься на исходную?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 22.12.2005 (Чт) 18:46

А как ты возвращаешься на исходную?

WebBrowser1.GoBack

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 23.12.2005 (Пт) 12:10

Как добавить пункт в контекстное меню.
http://bbs.vbstreets.ru/viewtopic.php?t=21748

Как сделать быстрый переход.
Полсле загрузки страницы сохрани в переменную ее текст:
Код: Выделить всё
Dim doc as IHTMLDocument
Set doc = WebBrowser1.Document
s = doc.documentElement.outerHTML

При возвращении на нее -
Код: Выделить всё
Dim doc as IHTMLDocument
Set doc = WebBrowser1.Document
doc.Write s

Однако, если на странице ссылки относителные, а не абсолютные, этот фокус не пройдет. Хотя можешь сам обрабатывать переход по ссылкам и при нужде подставлять абсолютный адрес.
Лучший способ понять что-то самому — объяснить это другому.

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 24.12.2005 (Сб) 8:24

Как добавить пункт в контекстное меню.
http://bbs.vbstreets.ru/viewtopic.php?t=21748

я конечно извиняюсь, но нифига не понял как это можно приспособить к моей проге ... , мне надо что бы при нажатии на ссылку правой кнопкой в стандартном IE, ссылка копировалась в переменную и в моей программе запускался WebBrowser1 с навигацией на эту ссылку.

Как сделать быстрый переход.
Полсле загрузки страницы сохрани в переменную ее текст:

Код:
Dim doc as IHTMLDocument
Set doc = WebBrowser1.Document
s = doc.documentElement.outerHTML

При возвращении на нее -

Код:
Dim doc as IHTMLDocument
Set doc = WebBrowser1.Document
doc.Write s

переменная s будет содержать в себе всегда текущий загруженный документ, как ей объяснить что надо использовать содержимое которое было в ней в предыдущий раз :) , для таких целей необходимо создавать как минимум масив переменных, но опять же на какую переменную возвращаться ???

НиколайП
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 06.12.2005 (Вт) 22:16

Сообщение НиколайП » 24.12.2005 (Сб) 8:33

хотя конечно же можно сделать кнопку которая будет сохранять в переменную только нужную страницу, но это не очень удобно да и к тому же к рисункам надо пути запоминать и потом при возврате указывать их ...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.12.2005 (Пн) 16:42

я конечно извиняюсь, но нифига не понял как это можно приспособить к моей проге ... , мне надо что бы при нажатии на ссылку правой кнопкой в стандартном IE, ссылка копировалась в переменную и в моей программе запускался WebBrowser1 с навигацией на эту ссылку.

Что непонятного? Добавив, пару пунктов в реестр, получаем свой пункт в меню. В скрипте страницы, путь к которой прописан в реестре, у window.external.menuArguments.event.srcElement получаем его href. А потом запускаем прогу с полученной ссылкой в качестве параметра.
Кстати, из <script> defer нужно убрать.
переменная s будет содержать в себе всегда текущий загруженный документ, как ей объяснить что надо использовать содержимое которое было в ней в предыдущий раз , для таких целей необходимо создавать как минимум масив переменных, но опять же на какую переменную возвращаться ???

Да неужели??? Дык придумай какую-нибудь навигацию. Не все ж тебе на блюдечке.

к рисункам надо пути запоминать и потом при возврате указывать их ...

Если у рисунков прописан абсолютный путь, то такой проблемы не возникнет, а если относительный, то
Код: Выделить всё
Dim imgs as  IHTMLElementCollection
Set imgs =doc.getElementsByTagName("img")
For Each img In imgs
    img.src = "http://www.somehost.com" & img.src
Next img
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 95

    TopList