Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic .NET

Войти
Регистрация
Восстановить пароль
 
 
eenk
0 / 0 / 0
Регистрация: 14.05.2016
Сообщений: 26
#1

Проводник средствами контрола WebBrowser - Visual Basic .NET

16.05.2016, 12:52. Просмотров 976. Ответов 31
Метки нет (Все метки)

Если в VB6 были контролы FileListBox, DirListBox, DriveList, с помощью которых можно было бродить по содержимому дискового пространства компьютера, то в vb.net их net.
В качестве альтернативы MSDN предлагает программное заполнение Listbox и ListView содержимым файловой системы компьютера. Однако, на деле это очень громоздко, медленно и хлопотно. И результат получается некрасивый.
С помощью WebBrowser тоже можно ходить по дискам, если добавить, до кучи, пару кнопок для "обслуживания": Назад и Вперед
Стартовать контрол может с любой удобной папки, например "Мои документы"
vb.net
1
2
CurrPath=My.Computer.FileSystem.SpecialDirectories.MyDocuments
WebBrowser1.Navigate(CurrPath)
для удобства можно добавить кнопку Вверх, с примерно таким кодом:
vb.net
1
2
3
4
5
6
7
Dim Nm As Integer=-1
        Dim Pth As String=WebBrowser1.Url.ToString().Remove(0,8).Replace("/","[I]обратный слэш[/I]") 'первые 8 символов, это "///file:", замена слэшей для других целей (использую, вкупе старый FileListBox)
        If Pth.EndsWith("обратный слэш")=True Then Exit Sub
        Nm=Pth.LastIndexOf("обратный слэш"): If Nm<0 Then Exit sub
        Pth=Pth.Remove(Nm)
        If Pth.Contains("обратный слэш")=false Then Pth=Pth &"" 'это на случай, если окажемся в корне диска, типа C:\ и предыдущая команда отрубит слэш
        Explorer.Navigate(Pth)
в конструкции My.Computer.FileSystem.SpecialDirectories имеется ряд других папок, с которых можно начать навигацию. Но нет такой, по которой WebBrowser показал бы такой набор:
Проводник средствами контрола WebBrowser
с этой картинки было бы наиболее удобно начинать.
Я знаю, есть какое-то магическое слово, чтобы WebBrowser открыл это, но не могу найти. Часа четыре убил.
---
обратный слэш - сайт, почему-то, удаляет этот символ '\, когда он в кавычках
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2016, 12:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проводник средствами контрола WebBrowser (Visual Basic .NET):

Внедрение в Проводник - Visual Basic .NET
Делаем антивирус, устали уже):wall: надо вот что сделать: Если пользователь в проводнике и не только (к примеру рабочий стол), кликает...

Перетаскивание файла с формы в проводник Windows - Visual Basic .NET
Помогите! Нигде не могу найти. Как копировать файл перетаскиванием его имени со списка на форме в проводник или рабочий стол. Есть...

Открыть проводник по пути, введенному в поле диалогового окна - Visual Basic .NET
Всемм доброй ночи. Пишу я это в 1.13 и вот я почти закончил программу но есть нюансы! Допустим на форме две кнопки допустим Button1 и...

Добавление контрола в тулбокс - Visual Basic .NET
День добрый, при создании своего контрола в &quot;добавить пользовательский элемент управления&quot; (студия 2012 года), не могу добавить его в...

Добавление своего контрола - Visual Basic .NET
Если я наследую от какого-либо контрола, то смогу ли размещать его как и стандартные контролы на форме, а не только кодом?

Есть ли в Webbrowser проводник DOM как в IExplore? - Delphi
Всем привет есть ли в Webbrowser проводник DOM как в iexplore и как можно от туда вытащить html код

31
diadiavova
1843 / 979 / 271
Регистрация: 11.04.2015
Сообщений: 1,820
Записей в блоге: 31
26.05.2016, 21:42 #16
Цитата Сообщение от eenk Посмотреть сообщение
спасибо. установил, работает.
Странно, я думал, ты уже давно установил и давно работает ))
Цитата Сообщение от eenk Посмотреть сообщение
где бы разузнать про его свойства и методы?
Ну во-первых, он поставляется с XML-документацией, то есть краткие пояснения доступны и из браузера объектов и прямо из редактора кода во всплывающих подсказках. Кое-что, по видимому, можно узнать из официального блога.
Цитата Сообщение от eenk Посмотреть сообщение
как заставить контрол "шагнуть" назад или вперед?
Ну опять-таки, уже известное тебе свойство NavigationLog, представляет объект, кое-что знающий о пердыдущих локациях, коллекция которых содержится в его свойстве Locations. Кроме того, у него есть свойство CurrentLocationIndex, а у ExplorerBrowser есть метод, который может перейти к любому индексу лога NavigateLogLocation. Могу ошибаться, но мне кажется, что, имея эту информацию, вполне можно догадаться как ответить на твой вопрос ))
0
eenk
0 / 0 / 0
Регистрация: 14.05.2016
Сообщений: 26
27.05.2016, 13:54  [ТС] #17
Цитата Сообщение от diadiavova Посмотреть сообщение
ты уже давно установил и давно работает ))
я на работе, поэтому мало времени на программку остается. и, второе: нет админских прав, отсюда пара проблем вылазит. Visual studio у меня нет, потому что установить никак; новые библиотеки прописать тоже - никак; и в интернете не все сайты открываются, потому как - политика, мать ее, конфиденциальности.
Пользую Sharp development, там структура интерфейса немножко другая. Но, вот, вчера разобрался. и NuGet тут есть.

Добавлено через 6 часов 58 минут
копаю, пробую. (explorer=ExplorerBrowser control)
Назад, Вперед:
vb.net
1
2
Explorer.NavigateLogLocation(Explorer.NavigationLog.CurrentLocationIndex-1)
Explorer.NavigateLogLocation(Explorer.NavigationLog.CurrentLocationIndex+1)
Если "вперед" некуда, ошибку не выдает, что радует.
0
eenk
0 / 0 / 0
Регистрация: 14.05.2016
Сообщений: 26
29.05.2016, 08:55  [ТС] #18
Почему-то среда выдает ошибку:
Невозможно загрузить файл ShellObjectFactory.cs из c:\projects\Windows API Code Pack 1.1\source\WindowsAPICodePack-NuGet\Shell\Common. Проверьте права доступа и существование этого файла.
и проект не запускается.

Microsoft.WindowsAPICodePack.Shell.ShellException: Unable to Create Shell Item. ---> System.IO.FileNotFoundException: Не удается найти указанный файл. (Исключение из HRESULT: 0x80070002)
--- Конец трассировки стека внутреннего исключения ---
в Microsoft.WindowsAPICodePack.Shell.ShellObjectFactory.Create(String parsingName) в c:\projects\Windows API Code Pack 1.1\source\WindowsAPICodePack-NuGet\Shell\Common\ShellObjectFactory.cs:строка 176
в Microsoft.WindowsAPICodePack.Shell.ShellObject.FromParsingName(String parsingName) в c:\projects\Windows API Code Pack 1.1\source\WindowsAPICodePack-NuGet\Shell\Common\ShellObject.cs:строка 30
в f3.MainForm.MainFormLoad(Object sender, EventArgs e)
в System.EventHandler.Invoke(Object sender, EventArgs e)
в System.Windows.Forms.Form.OnLoad(EventArgs e)
в System.Windows.Forms.Form.OnCreateControl()
в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
в System.Windows.Forms.Control.CreateControl()
в System.Windows.Forms.Control.WmShowWindow(Message& m)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
в System.Windows.Forms.Form.WmShowWindow(Message& m)
в System.Windows.Forms.Form.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Когда в первый раз такое было, я удалил пакеты Microsoft.WindowsAPICodePack.Shell, контрол удалил. Потом заново все установил и поработало два раза. И, снова.
папки c:\projects\Windows API Code Pack 1.1\source\WindowsAPICodePack-NuGet\Shell\Common у меня не существует, да и файла такого на компьютере нигде нет.
Скачал его, создал указанные папки, положил туда этот файлик. Сборка запускается. Надолго ли?

Подозреваю, что это косячок SharpDevelop...
0
Zefirr
0 / 0 / 0
Регистрация: 02.10.2015
Сообщений: 7
30.05.2016, 10:24 #19
Можно ли скрыть части окна только в ExplorerBrowser? Сейчас любые настройки отображаются и в проводнике Windows.
0
eenk
0 / 0 / 0
Регистрация: 14.05.2016
Сообщений: 26
30.05.2016, 12:39  [ТС] #20
Цитата Сообщение от Zefirr Посмотреть сообщение
любые настройки отображаются и в проводнике Windows
думаю, этот контрол работает на одной базе с проводником windows.
0
eenk
0 / 0 / 0
Регистрация: 14.05.2016
Сообщений: 26
01.06.2016, 07:41  [ТС] #21
Решил не заморачиваться с дополнительными контролами и оставить webbrowser. SharpDevelop подглючивать стал, когда в сборку добавил дополнительные dll. Или криво добавил, хотя, двух путей там нет. К тому же, exe из папки bin не работает без библиотек, лежащих рядом. Наверное, по окончанию можно как-то вшить эти библиотеки в результат, но не знаю. Никогда не доходил до реализации решения, всегда брал последний скомпилированный файлик из debug и норм.
вопрос остался, кстати:
Цитата Сообщение от eenk Посмотреть сообщение
Я знаю, есть какое-то магическое слово, чтобы WebBrowser открыл это, но не могу найти. Часа четыре убил.
0
diadiavova
1843 / 979 / 271
Регистрация: 11.04.2015
Сообщений: 1,820
Записей в блоге: 31
01.06.2016, 11:27 #22
Цитата Сообщение от eenk Посмотреть сообщение
SharpDevelop подглючивать стал
Шарпдевелоп мало кто использует, поэтому когда возникают проблемы с этой средой, решать их чаще всего придется самостоятельно.
Цитата Сообщение от eenk Посмотреть сообщение
К тому же, exe из папки bin не работает без библиотек, лежащих рядом.
Ну они и должны быть рядом, студия копирует их всегда.
Цитата Сообщение от eenk Посмотреть сообщение
Никогда не доходил до реализации решения, всегда брал последний скомпилированный файлик из debug и норм.
Вообще-то надо установочный пакет создавать. Он как раз и нужен для того, чтобы все подобные проблемы решить.
Цитата Сообщение от eenk Посмотреть сообщение
Я знаю, есть какое-то магическое слово, чтобы WebBrowser открыл это, но не могу найти. Часа четыре убил.
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}

Правда не могу сказать точно, сработает ли это с браузером
0
eenk
0 / 0 / 0
Регистрация: 14.05.2016
Сообщений: 26
01.06.2016, 13:15  [ТС] #23
Цитата Сообщение от diadiavova Посмотреть сообщение
Правда не могу сказать точно, сработает ли это с браузером
не сработало.
System.ArgumentException: Значение не попадает в ожидаемый диапазон.
в System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Navigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers)
в System.Windows.Forms.WebBrowser.PerformNavigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers)
в System.Windows.Forms.WebBrowser.Navigate(String urlString)
нет, там простая фраза какая-то. типа "about: My computer" или как-то так.
0
diadiavova
1843 / 979 / 271
Регистрация: 11.04.2015
Сообщений: 1,820
Записей в блоге: 31
01.06.2016, 13:38 #24
Цитата Сообщение от eenk Посмотреть сообщение
нет, там простая фраза какая-то. типа "about: My computer" или как-то так.
Попробуй ввести это в проводник
0
eenk
0 / 0 / 0
Регистрация: 14.05.2016
Сообщений: 26
01.06.2016, 13:42  [ТС] #25
Цитата Сообщение от diadiavova Посмотреть сообщение
ввести это в проводник
в IE тогда уж. Я пробовал разные комбинации в адресной строке ie, бинг уже задолбал.
0
diadiavova
1843 / 979 / 271
Регистрация: 11.04.2015
Сообщений: 1,820
Записей в блоге: 31
01.06.2016, 13:44 #26
Цитата Сообщение от eenk Посмотреть сообщение
в IE тогда уж.
В IE не работает, но если введешь в проводник, то увидишь, что это приведет тебя куда надо
0
eenk
0 / 0 / 0
Регистрация: 14.05.2016
Сообщений: 26
01.06.2016, 17:15  [ТС] #27
Цитата Сообщение от diadiavova Посмотреть сообщение
это приведет тебя куда надо
В проводнике привело А в контроле не хочет
PS похоже на ключ реестра.
0
diadiavova
1843 / 979 / 271
Регистрация: 11.04.2015
Сообщений: 1,820
Записей в блоге: 31
01.06.2016, 17:23 #28
Ну значит таки адрес я тебе правильный дал )) А то, что он в браузере не хочет отображаться, так браузер вроде как не для этого предназначен.
0
Yury Komar
Модератор
2250 / 2055 / 324
Регистрация: 27.01.2014
Сообщений: 3,625
Завершенные тесты: 1
04.06.2016, 00:59 #29
а почему используя webbrowser не хранить массив папок и просто не собирать путь при вызове той или иной и передавать его в webbrowser.navigate? получится так же, как в Windows7 и выше в адресной строке, кликнул на тмя папки, перешел к ней, а не просто назад вперед.
а вообще, не тяжело ведь написать простой ЛистВью, заполнить его элементами текущей папки и присвоить значки взяв их из системы и тогда у вас полная свобода действий, как хотите, так и программируйте его дальше.
0
vova2112
113 / 105 / 30
Регистрация: 28.02.2014
Сообщений: 125
05.06.2016, 12:51 #30
vb.net
1
WebBrowser1.Navigate("shell:MyComputerFolder")
3
05.06.2016, 12:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2016, 12:51
Привет! Вот еще темы с ответами:

Как получить содержимое фрейма из контрола WebBrowser? - Visual Basic
Кстати, на Delphi таже самая история. Так что пока нет выхода? Может всё же &quot;View Source&quot; как нибудь использовать?

Реализация в консоли контрола WebBrowser и в новом потоке - C#
Создаю консольное приложение,добавляю контрол WebBrowser в новый поток но метод WebBrowser.Navigate(“site”) не срабатывает, экземпляр...

Как присвоить на прямую WebBrowser-у, html-body контрола? - Visual Basic
Есть контрол WinHTTP, Отправляется запрос на страницу WinHTTP.Open 'GET', 'http://www....', False WinHTTP.Send После возврата...

Получить ответ на GET запрос средствами Webbrowser? - Delphi
Как получить ответ на GET запрос средствами Webbrowser? На сайте есть кпопка с ява скриптом, которая формирует GET запрос, после...


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

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

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