:: Visual Foxpro, Foxpro for DOS
Работа с файлами в WebBrowser Control
shumik73

Сообщений: 515
Откуда: Алматы
Дата регистрации: 10.05.2006
Добрый день!

Тема WebBrowser много раз подымалась на форуме
Хочу поделиться опытом работы с этим компонентом.
Может кому и пригодится

Компонент WebBrowser можно установить на своей форме и отобразить в нём
1) Пустой бланк Thisform.Olecontrol1.OBJECT.Navigate2("About:Blank")
2) Сайт Thisform.Olecontrol1.OBJECT.Navigate2("ya.ru")

Можно сформировать текстовую строку TEXT... ENDTEXT и загрузить её для отображения
Благодаря этой возможности можно формировать
1) Отчеты в HTML
2) Панели инструментов
3) Схемы
При этом отображения в WebBrowser можно скопировать, перенести в MSWord, вывести на просмотр и печать

Компонент WebBrowser позволяет отображать для просмотра и PDF_файлы
lcNameDPF=GETFILE('pdf')
IF !EMPTY(lcNameDPF) AND FILE(lcNameDPF)
Thisform.Olecontrol1.OBJECT.Navigate2("About:Blank")
Start_Second=SECONDS()
DO WHILE (Thisform.Olecontrol1.OBJECT.Busy OR Thisform.Olecontrol1.OBJECT.Busy) AND (SECONDS()-Start_Second<5)
DOEVENTS
ENDDO
WAIT WINDOW "Load PDF" NOWAIT
Thisform.Olecontrol1.OBJECT.Navigate2(lcNameDPF)
DO WHILE (Thisform.Olecontrol1.OBJECT.Busy OR Thisform.Olecontrol1.OBJECT.Busy) AND (SECONDS()-Start_Second<5)
DOEVENTS
ENDDO
WAIT CLEAR
ENDIF


WebBrowser может отображать не только Web-страницы, но и папку с вложенными файлами
Thisform.Olecontrol1.OBJECT.Navigate2("C:\")
Если был бы Web-сай то т:
1) файлы лежат на хостинге а для пользователя нужно реализовать
2) функции отображения списка файлов
3) скачка файлов по ссылке идет в локальные "загрузки"
4) функции прикрепления новых файлов
В этом есть плюс - в том что пользователь не может подменить файлы

Но для компонента WebBrowser ситуация иная:
1) пользователь работает с папкой и может вложить разные файлы и неограниченное их количество
2) визуально файлы отображаются как обычные файлы с теми же иконками и двойным кликом их можно открывать тут же
3) в локальной сети (не RDP) пользователь может переносить с рабочего стола файлы сразу в WebBrowser

По умолчанию WebBrowser отображает список файлов в виде "Больших иконок" и часто приходится переключать "Вид отображения" на "Список" или "Таблица"
Чтобы избежать этого неудобство необходимо выполнить настройки:

&&Выбор вида отображения 1,2,3.....
Thisorm.Olecontrol1.OBJECT.Document.CurrentViewMode=1
&&Выбор размера иконок 16,32,48
ThisForm.Olecontrol1.OBJECT.Document.IconSize=16
&&Сортировка файлов по типу, размеру, имени
Thisform.Olecontrol1.OBJECT.Document.SortColumns="prop:System.ItemNameDisplay;"
Thisform.Olecontrol1.OBJECT.Document.SortColumns="prop:-System.Size;"
&&Группировка файлов
Thisform.Olecontrol1.OBJECT.Document.GroupBy="System.Null"
Thisform.Olecontrol1.OBJECT.Document.GroupBy="System.ItemTypeText"

Отображение файлов в заданной форме - это основа документооборота, в которой данные хранятся в SQL, а подтверждающие файлы в папках.
Так как папок много то их имена можно генерирует SYS(2015)
Папка не гарантирует ограничения доступа для определенных пользователей и не может ответить кто заходил или менял файлы


При обращение к папке по RDP (копирование, вставке, вызова меню нажатием правой кнопки мыши) появляется предупреждение системы безопасности - что нервирует пользователей

[attachment 36514 .png]

Чтобы убрать это сообщение предлагается снизить уровень безопасности - что не приемлемо

Подскажите возможно ли решить вопросы безопасности:
- Заблокировать просмотр папки по сети, но при этом открыть доступ просмотра в WebBrowser?
- Заблокировать вывод предупреждение системы безопасности в WebBrowser, без снижения уровня?
Ratings: 0 negative/2 positive
Re: Работа с файлами в WebBrowser Control
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
Женя, привет! Тему не знаю, но стало интересно!
Не пойму
Thisform.Olecontrol1.OBJECT.Busy OR Thisform.Olecontrol1.OBJECT.Busy
Помнишь Девкон Форума в Березовой Роще, город Уфа?



Исправлено 3 раз(а). Последнее : Ydin, 21.03.23 17:57
Ratings: 0 negative/0 positive
Re: Работа с файлами в WebBrowser Control
ABB

Сообщений: 149
Откуда: Санкт-Петербург
Дата регистрации: 21.10.2006
Приведите все настройки безопасности WebBrowser control, которые нужно изменить для предотвращения предупреждений

ChatGPT Bot, [21.03.2023 19:22]
Ниже приведены некоторые настройки безопасности WebBrowser control, которые могут быть изменены, чтобы предотвратить некоторые типы предупреждений:

1. ScriptErrorsSuppressed: Эта настройка может быть установлена на значение "true". Это позволит отключить вывод предупреждений о JavaScript-скриптах на страницах.

2. WebBrowserShortcutsEnabled: Эта настройка может быть установлена на значение "false". Это отключит контекстное меню по нажатию правой кнопки мыши и сочетания клавиш, такие как Ctrl + C или Ctrl + V.

3. WebBrowserAllowNavigation: Эта настройка может быть установлена на значение "false". Это отключит возможность пользователей переходить на другие страницы.

4. WebBrowserControl.ObjectForScripting: Эта настройка может быть установлена на экземпляр объекта, который будет доступен в JavaScript на странице. Это позволит вызывать методы объекта из JavaScript, что может избежать предупреждений о нарушении безопасности.

5. WebBrowserIsWebBrowserContextMenuEnabled: Эта настройка может быть установлена на значение "false". Это отключит контекстное меню веб-браузера, что может предотвратить некоторые типы предупреждений.

6. WebBrowserUrlAction: Эта настройка может быть использована для изменения действий, которые разрешены при загрузке страницы. Например, вы можете запретить загрузку активных контролов или настройку параметров безопасности.

Несмотря на то, что изменение этих настроек может предотвратить некоторые типы предупреждений, рекомендуется сохранять высокий уровень безопасности и не изменять настройки безопасности без необходимости. Это поможет предотвратить возможные уязвимости и угрозы безопасности для вашей системы.
Ratings: 0 negative/0 positive
Re: Работа с файлами в WebBrowser Control
of63
Автор

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> При обращение к папке по RDP

Как это происходит на языке фокс?
- программа работает на удаленном столе и не знает, что она используется удаленным пользователем?
- желаемы файл html открывается средствами RDP (например, "проброшенный" диск, или как-то...)

как-то столкнулся с невозможностью открыть файл .chm на удаленном диске (с сообщением об опасности), а при копировании его на С он открывался. Я так и сделал - копирую на "Цэ", ... Чтобы не напрягать систему - сравниваю дату/размер файла на удаленном диске с копией на Цэ, и не каждый раз копирую. Всё это стоит подпрограмм, заморочек... зато у юзеров все "быстро" работает с Це, ОС не спрашивает ничего...



Исправлено 1 раз(а). Последнее : of63, 21.03.23 20:03
Ratings: 0 negative/0 positive
Re: Работа с файлами в WebBrowser Control
shumik73

Сообщений: 515
Откуда: Алматы
Дата регистрации: 10.05.2006
Девкон в Уфе разве можно забыть?

Мануал на WebBrowser script-coding.com

C ожидалкой загрузки я точно чуток ошибся
(Thisform.Olecontrol1.OBJECT.Busy OR Thisform.Olecontrol1.OBJECT.ReadyState<>4) AND (SECONDS()-Start_Second<5)

Thisform.Olecontrol1.OBJECT.Busy - Возвращает булево значение, сигнализирующее о том, занят ли объект операцией навигации или скачивания. Только чтение. Если объект занят, можно применить метод Stop для прерывания операции.

Thisform.Olecontrol1.OBJECT.ReadyState - Возвращает значение, сигнализирующее состояние готовности объекта. Только чтение.
Возможные значения: 0 - не инициализирован, 1 - загрузка, 2 - загрузка завершена, 3 - доступны не все данные (это то состояние, когда браузер позволяет просматривать страницу в интерактивном режиме, хотя загружены ещё не все компоненты; начиная с этого момента HTML-код вполне пригоден для обработки), 4 - готово.

Вопрос в том что после команды загрузки Thisform.Olecontrol1.OBJECT.Navigate2("....") нужно дождаться выполнения команды.
Программно завершение отслеживается статусами Busy и ReadyState. Но бывает что пользователь уже видит сайт, а цикл DOWHILE еще крутится и выполнение кода не продолжается. Вот поэтому чтобы не ждать добавлен еще и предел ожидания SECONDS()
Но и этого бывает мало. Процесс загрузки может вовсе зависнуть и при движение мыши над видимым элементом WebBrowser заставит отвиснуть.
Поэтому для парсинга я еще перед запуском запускаю таймер. Который наводит мышь в область WebBrowser и кликает в угол. А после загрузки таймер останавливаю.
Да танец с бубном - но работает

Есть и другая проблема которая возникает при парсинге - когда открывается много webстраниц «Недостаточно памяти в строке 1»
Пусть даже будет много дискового пространства и памяти - единственное решение после Х-загрузок выключать и запускать заново
На эту тему много инфы в инете - но решения не нашел
Ratings: 0 negative/0 positive
Re: Работа с файлами в WebBrowser Control
shumik73

Сообщений: 515
Откуда: Алматы
Дата регистрации: 10.05.2006
На сервере находятся файлы которые просматриваюnся в WebBrowser, а так же пользователи добавляют, удаляют и запускают эти файлы
Если пользователь открывает программу на своем локальном компьютере - то в окне WebBrowser он не встречает никаких предостерегающих сообщений
Пользователь сам решает как ему скопировать файлы с своего стола внутрь WebBrowser (Ctrl+C / Ctrl+V), а может просто перенести мышкой:

[attachment 36515 .png]

Но стоит пользователю забрать свой ноутбук на выходные и с дома подключиться по RDP - то тут возникают некоторые моменты
1) Установленная локальная программа уже не участвует, так как открывается RDP-окно и все происходит в нем на Windows-server
2) Перенос с локального рабочего стола на RDP-окно уже не получится. Остается только (Ctrl+C / Ctrl+V)
3) На локальном компьютере Ctrl+C проходит, а вот на RDP при нажатие правой кнопки мыши выходит предупреждающее окно и необходимо нажимать "Ок"
Для пользователей это выглядит как "Там какая-то ошибка вылезла! Что мне делать?"

[attachment 36516 .png]

Для решение такой задачи предлагается:
1) Если вы делаете это часто для определенного веб-сайта и доверяете ему полностью, добавьте сайт в зону Надежные узлы , выбрав эту зону и нажав кнопку Сайты.
2) Если вы хотите изменить настройку для всех сайтов, 0pen Internet Explorer> Инструменты> Параметры Интернета> вкладка Безопасность. Выберите «Ограниченные сайты» и нажмите кнопку «Пользовательский уровень».
3) Если это не поможет, вы можете изменить параметр реестра и посмотреть, поможет ли это вам, Для этого запустите regedit, чтобы открыть редактор реестра.
Ratings: 0 negative/0 positive
Re: Работа с файлами в WebBrowser Control
of63
Автор

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
"Добавить в надежные узлы" мтк - вариантов мало
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 20 (Гостей: 20)

© 2000-2024 Fox Club 
Яндекс.Метрика