Загрузка в WebBrowser потока

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

ZhDima
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 13.10.2006 (Пт) 17:28
Откуда: Москва

Загрузка в WebBrowser потока

Сообщение ZhDima » 27.11.2008 (Чт) 12:55

Уважаемые программисты !

Подскажите, пожалуйста чайнику: как в WebBrowser загрузить целиком страничку из памяти, не с диска и не с Инета, а допустим, в базе хранятся файлы в бинарном виде (html страничка, набор html, gif, css, js файлов), а теперь задача загрузить всё это в WebBrowser при этом не используя как промежуточный вариант какую-нибудь директорию ???

И вообще это возможно ???

Заранее благодарен всем откликнувшемся программерам, с уважением Дмитрий :)

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Загрузка в WebBrowser потока

Сообщение Williams » 27.11.2008 (Чт) 14:08

Имхо, так нельзя. Браузер не сможет читать сопутствующие файлы из памяти. HTML всегда указывает на пути
И вы думаете, что вас оставят в живых после прочтения этого поста?

ZhDima
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 13.10.2006 (Пт) 17:28
Откуда: Москва

Re: Загрузка в WebBrowser потока

Сообщение ZhDima » 27.11.2008 (Чт) 14:50

Williams огромное спасибо за ответ, а то вообще никто не отвечает :(

На самом деле Браузер может читать файлики кот. находятся в ресурсах прикрепленные к EXE или DLL файлам, но если екзешник написан на .NET, то он является незащищенном ... по этому мне пока этот метод не подходит (упаковывать экзешник, я пока не могу, т.к. не нашел нормальных исходников упаковщиков).

Есть ещё возможность защитить директорию, но я пока не нашел хорошего решения защиты директории ....

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Загрузка в WebBrowser потока

Сообщение Viper » 27.11.2008 (Чт) 14:56

ZhDima писал(а):Williams огромное спасибо за ответ, а то вообще никто не отвечает :(
Ответ в пределах часа это вполне нормально и быстро.
Весь мир матрица, а мы в нем потоки байтов!

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Загрузка в WebBrowser потока

Сообщение Joo » 27.11.2008 (Чт) 15:30

Williams писал(а):Имхо, так нельзя. Браузер не сможет читать сопутствующие файлы из памяти. HTML всегда указывает на пути

Как это нельзя?

На VB6 я писал:
Вкомпиливал все файлы(html,css, images, etc) в ресурсы проги или библиотеки.
Потом вызывал так:
Код: Выделить всё
WebBrowserComponent.Navigate "res://" & App.Path & "\HTMLBASE.DLL/INDEX.HTM"


Лично я делал пустую библу на асме, и в ресурс ей пхал содержимое

Подготовка файла RES (Пример с использованием инструментов MASM)
Собирается ресурс такой командой "/masm32/bin/RC res.rc"
Полученный RES файл прилинковываешь к программе или библиотеке.

Пример моего rc файла:
Код: Выделить всё
#include "\masm32\include\resource.h"
//Стили
MAIN.CSS   HTML DISCARDABLE ".\\HTML\\MAIN.CSS"
//Странички
INDEX.HTM    HTML DISCARDABLE ".\\HTML\\INDEX.HTM"
AUTHOR.HTM    HTML DISCARDABLE ".\\HTML\\AUTHOR.HTM"
FOTOS.HTM    HTML DISCARDABLE ".\\HTML\\FOTOS.HTM"
//Картинки
BGGROUND.GIF   HTML DISCARDABLE ".\\HTML\\BGGROUND.GIF"
AUTHOR.JPG   HTML DISCARDABLE ".\\HTML\\AUTHOR.JPG"
FOTO_01.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_01.JPG"
FOTO_02.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_02.JPG"
FOTO_03.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_03.JPG"
FOTO_04.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_04.JPG"
FOTO_05.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_05.JPG"
FOTO_06.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_06.JPG"
FOTO_07.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_07.JPG"
FOTO_08.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_08.JPG"
FOTO_09.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_09.JPG"
FOTO_10.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_10.JPG"
FOTO_11.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_11.JPG"
FOTO_12.JPG   HTML DISCARDABLE ".\\HTML\\FOTO_12.JPG"


Пример библиотеки:
Код: Выделить всё
   .386
   .model flat,stdcall

   option casemap:none
   include \masm32\include\windows.inc
   include \masm32\include\user32.inc
   include \masm32\include\kernel32.inc

   includelib \masm32\lib\user32.lib
   includelib \masm32\lib\kernel32.lib


   .data
   .code
   DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD
           mov  eax,TRUE
           ret
   DllEntry Endp

   End DllEntry

   LIBRARY   HTMLBASE


BAT файл для сборки:
Код: Выделить всё
/masm32/bin/RC res.rc
/masm32/bin/ml /c /coff /Cp /nologo HTMLBASE.asm
/masm32/bin/link /nologo /dll /SUBSYSTEM:WINDOWS /OUT:HTMLBASE.DLL HTMLBASE.obj RES.RES
copy "HTMLBASE.DLL" "..\HTMLBASE.DLL"
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

ZhDima
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 13.10.2006 (Пт) 17:28
Откуда: Москва

Re: Загрузка в WebBrowser потока

Сообщение ZhDima » 27.11.2008 (Чт) 15:34

Viper - Дело в том что я этот вопрос задал не только на этом форуме, но и на http://www.gotdotnet.ru

ZhDima
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 13.10.2006 (Пт) 17:28
Откуда: Москва

Re: Загрузка в WebBrowser потока

Сообщение ZhDima » 27.11.2008 (Чт) 15:54

Да .... Scarabey, чего-то это очень круто ....

Дело в том что я знаю пример который формирует EXE файл с прикрепленными к нему файлами, написанный на C# VS2005, причем он гораздо проще, но если твой пример ещё и шифрует экзешник (надо чтобы html контент не был виден) то это просто замечательно ..., хотябы что-бы контент не читался текстовым редактором. (имеется ввиду просмотр экзешника при помощи допустим FAR-а) ...

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Загрузка в WebBrowser потока

Сообщение Joo » 27.11.2008 (Чт) 16:15

ZhDima писал(а):[color=#0000BF]Да .... Scarabey, чего-то это очень круто ....

Круто не круто....
Я тебе написал как я это сделал, мне нужно было хранить в отдельном файле HTML содержимое, я легко могу и к EXE основному прикрутить...
Только видишь в чем дело, зашифровать не выдет, т.к. Explorer тебя слегка не поймет, что ты ему вываливаешь.

Шифровать с помощью Java не предлагаю, но есть выход:
1. Неважно где, хранишь весь контент в зашифрованном виде, (де)шифровшик пишешь сам
2. При выводе странички, делаешь следующее
2.1 Открывешь файл(ы) где небудь в tmp
2.2 Блокируешь от чтения/записи для других процессов
2.3 Расшифровываешь туда содержимое
2.4 Подсовываешь Web компоненту
2.5 По завершении загрузки удаляешь временные файлы

Конечно и такой механизм можно обойти, но я реально видел программы которые так работают.

Только пройдись по проге обфускатором, а то алгоритм (де)шифровки проворонишь :wink:
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Загрузка в WebBrowser потока

Сообщение Williams » 27.11.2008 (Чт) 16:19

Защиту содержимого можно сделать, но это зависит от уровня аудитории. Если пользователи будут ламеры, то достаточно хранить контент шифрованный любым ключом, а потом распаковывать в папку помеченную атрибутом "системная". Отлючить все меню, чтобы не могли просмотреть исходник.

^ про обфускатор вышеуказанное верно.
И вы думаете, что вас оставят в живых после прочтения этого поста?

ZhDima
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 13.10.2006 (Пт) 17:28
Откуда: Москва

Re: Загрузка в WebBrowser потока

Сообщение ZhDima » 27.11.2008 (Чт) 18:34

Большое Спасибо за потраченное на меня время Scarabey и Williams :)

Scarabey, а по подробнее про блокировку от записи/чтения других процессов можешь помочь, примерчик или хотябы ссылочку кинуть ???

С Уважением Дмитрий :)

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Загрузка в WebBrowser потока

Сообщение Williams » 27.11.2008 (Чт) 19:12

ZhDima писал(а):Большое Спасибо за потраченное на меня время Scarabey и Williams :)

Scarabey, а по подробнее про блокировку от записи/чтения других процессов можешь помочь, примерчик или хотябы ссылочку кинуть ???

С Уважением Дмитрий :)


Код: Выделить всё
Dim fs As New IO.FileStream(_путь_, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
И вы думаете, что вас оставят в живых после прочтения этого поста?

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: Загрузка в WebBrowser потока

Сообщение Joo » 28.11.2008 (Пт) 7:59

Williams писал(а):
Код: Выделить всё
Dim fs As New IO.FileStream(_путь_, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)


Ага, именно так ))
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Загрузка в WebBrowser потока

Сообщение tyomitch » 28.11.2008 (Пт) 17:53

А ещё можно написать свой протокол :shock:
Изображение

ZhDima
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 13.10.2006 (Пт) 17:28
Откуда: Москва

Re: Загрузка в WebBrowser потока

Сообщение ZhDima » 01.12.2008 (Пн) 11:09

tyomitch а можно по подробнее про свой протокол ??? Это уже интереснее, просто я об этом думал, но не знаю с чего начать ???

С Уважением Дмитрий :)

ZhDima
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 13.10.2006 (Пт) 17:28
Откуда: Москва

Re: Загрузка в WebBrowser потока

Сообщение ZhDima » 02.12.2008 (Вт) 10:09

Ладно, Всем ответчикам ОГРОМНОЕ СПАСИБО, буду писать прогу с Вашими предложениями и не только, ещё и свои мысли вложу, ну а потом в следующей итерации попробую с протоколом, если чего найду ... :D

Как только чего выйдет, могу описать что получилось ....

С Уважением Дмитрий :D


Вернуться в Visual Basic .NET

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList