Браузер в качестве View в десктопных проектах (WebUI)
Модератор: Модераторы
Спасибо, гляну !
(Хотя мой проект Shell2Shell благополучно переехал на WebView4Delphi идея все равно интересная )
(Хотя мой проект Shell2Shell благополучно переехал на WebView4Delphi идея все равно интересная )
Наткнулся на интересный врапер для библиотеки плеера mpvAlex2013 писал(а):Спасибо, гляну !
Собрал пример, подсунул ему ссылку на видео, выдернутую из кода известного нам сайта...работает, вот скриншот
Единственное, что не радует, это размер dll - 60 Мб
Но в сети пишут, что прям отличный плеер и полноценный врапер, можете глянуть...вдруг где пригодиться
Вся магия удобна и проста:
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
FreeAndNil(cPlayer);
cPlayer := TMPVBasePlayer.Create;
cPlayer.InitPlayer(IntToStr(Panel2.Handle), '', '', '');
cPlayer.OpenFile('https://hye1eaipby4w.takedwn.ws/08_14_23/08/14/22/YHMVOWRH/FD7VO3UU.mp4/master.m3u8');
end;С одной стороны интересно но плеер на базе FFMPEG занимает cо всеми DLL 12мб в архиве и 42мб в распакованном виде.delphius писал(а):Наткнулся на интересный врапер для библиотеки плеера mpvAlex2013 писал(а):Спасибо, гляну !
Собрал пример, подсунул ему ссылку на видео, выдернутую из кода известного нам сайта...работает, вот скриншот
Единственное, что не радует, это размер dll - 60 Мб![]()
Но в сети пишут, что прям отличный плеер и полноценный враппер, можете глянуть...вдруг где пригодиться

Последний раз редактировалось Alex2013 16.08.2023 23:31:58, всего редактировалось 1 раз.
19 метров в архиве и требуется только одна dllAlex2013 писал(а):плеер на базе FFMPEG занимает cо всеми DLL 12мб в архиве и 42мб в распакованном виде
О это уже интереснее ! А что проигрыванием m3u8 с локального диска ?delphius писал(а):19 метров в архиве и требуется только одна dll
Зы
Кстати, некоторые DLL успешно сжимаются разными EXE-паками.
Последний раз редактировалось Alex2013 16.08.2023 23:38:40, всего редактировалось 1 раз.
Без понятия, из сети тянет норм, остальное проверяейтеAlex2013 писал(а):А что проигрыванием m3u8 с локального диска ?
Ок...delphius писал(а):Без понятия, из сети тянет норм, остальное проверяйте
И его можно сжатым упихать внутрь экзешника самой программы в виде ресурса, например вот этим способом (эдакий нативный аналог созданию самораспаковывающегося архиваAlex2013 писал(а):Кстати, некоторые DLL успешно сжимаются разными EXE-паками.
Вышла новая версия библиотеки, обновил к ней wraper
Из нового и интересного - реализован предложенный мной headless режим работы окна браузера, при котором паскалевская программа работает в обычном режиме (консоль или форма), а браузер работает в фоновом (без вывода окон, сообщений, только в виде задач в памяти), при этом между ними установлена двухсторонняя связь для выполнения скриптов из паскаля и возврата в него данных.
Практическое использование - выполнение любых задач, которые можно решать с использованием браузера, например парсинг страниц, организация любых форм взаимодействия с любыми ресурсами в сети используя настоящий! браузер, работающий в фоновом режиме.
Из нового и интересного - реализован предложенный мной headless режим работы окна браузера, при котором паскалевская программа работает в обычном режиме (консоль или форма), а браузер работает в фоновом (без вывода окон, сообщений, только в виде задач в памяти), при этом между ними установлена двухсторонняя связь для выполнения скриптов из паскаля и возврата в него данных.
Практическое использование - выполнение любых задач, которые можно решать с использованием браузера, например парсинг страниц, организация любых форм взаимодействия с любыми ресурсами в сети используя настоящий! браузер, работающий в фоновом режиме.
Тут появилась новая идея ...
Добраться до "веб-контента" и мониторить работу веб интерфейса так-же как я мониторю консоль + сделать отдельную базу данных вводимых в веб интерфейс.
В общем сейчас есть вопрос, что проще использовать для этого WebUI или WebView4Delphi а возможно имеет смысл просто сделать полу-прозрачный псевдо-прокси на другом порту (и/или локальном IP) ( и тупо просить трафик идущий с/на "нативный сервер" )?
Добраться до "веб-контента" и мониторить работу веб интерфейса так-же как я мониторю консоль + сделать отдельную базу данных вводимых в веб интерфейс.
В общем сейчас есть вопрос, что проще использовать для этого WebUI или WebView4Delphi а возможно имеет смысл просто сделать полу-прозрачный псевдо-прокси на другом порту (и/или локальном IP) ( и тупо просить трафик идущий с/на "нативный сервер" )?
Снова занялся очередным рефакторингом онлайн кинотеатра "Лесхоз"...
Пробовал использовать WebUI один раз срабатывает а второй раз выдает ошибку (после перезагрузи компа работает но опять только один раз )...
Ну ладно "едим дальше", придумал как использовать отдельный exe-модуль-браузер использующий WebView4Delphi (или CEF4Delphi) так чтобы он работал в окне основной программы .
В модуле-браузере пишу что-то вроде этого:
А в основной программе что-то типа этого.
В результате запущенный модуль-браузер полностью интегрируется в интерфейс "док-станции"(основной программы).

Все это хорошо но WebView4Delphi не дружит с русскими буквами в путях к программе (Кстати как-бы это поправить?), а CEF4Delphi "тяжеловат" и довольно сильно устарел
(особенно если пытаться сэкономить на размере).
Так что модуль-браузер на основе WebUI был был бы тем что "доктор прописал" но вот беда там тоже ошибка ( возможно опять проблемы со старой десятой виндой но я вообще думаю что "лесхоз" должен работать даже на XP и Win 7 так что хорошо-бы найти или сделать "лайт версию" WebUI "без излишеств" (то есть просто запуск стандартного браузера "в окне без рамок")).
Зы
Запуск стандартного браузера "напрямую" был бы идеальным вариантом, но вот беда этот фокус не позволяет использовать интеграцию через SetParent (как минимум у меня это не выходит и упорно получается "пусте окно" ).
Пробовал использовать WebUI один раз срабатывает а второй раз выдает ошибку (после перезагрузи компа работает но опять только один раз )...
Ну ладно "едим дальше", придумал как использовать отдельный exe-модуль-браузер использующий WebView4Delphi (или CEF4Delphi) так чтобы он работал в окне основной программы .
В модуле-браузере пишу что-то вроде этого:
Код: Выделить всё
procedure TMainForm.FormActivate(Sender: TObject);
begin
if (ParamCount =3 ) And (ParamStr(1)='RUN_IN_DS') then
begin
windows.SetParent(Handle,ParamStr(2).ToInt64);
while not AddressPnl.Enabled do application.ProcessMessages;
WVBrowser1.Navigate(UTF8Decode(ParamStr(3)));
end;
end;
Код: Выделить всё
procedure TMainForm.ExecPanelResize(Sender: TObject);
begin
if Process1.Running then begin
Con_h:= Windows.GetFirstChild(ExecPanel.Handle);
if ( Con_h<>0 ) and windows.IsWindow(Con_h) then
begin
windows.MoveWindow( Con_h ,0,0,Execpanel.Width,Execpanel.Height,true);
end;
self.Refresh;
end;
end;
procedure TMainForm.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
Process1. Terminate (0);
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
end;
procedure TMainForm.GoBtnClick(Sender: TObject);
begin
Process1. Terminate (0);
Process1.CommandLine:='SimpleBrowser.exe'
+' RUN_IN_DS '+self.ExecPanel.Handle.ToString+' '+
self.AddressCb.Text ;
Process1.Execute;
sleep(500);
if Process1.Running then begin
Con_h:= Windows.GetFirstChild(ExecPanel.Handle);
if ( Con_h<>0 ) and windows.IsWindow(Con_h) then
begin
windows.MoveWindow( Con_h ,0,0,Execpanel.Width,Execpanel.Height,true);
end;
self.Refresh;
end;
end;
В результате запущенный модуль-браузер полностью интегрируется в интерфейс "док-станции"(основной программы).

Все это хорошо но WebView4Delphi не дружит с русскими буквами в путях к программе (Кстати как-бы это поправить?), а CEF4Delphi "тяжеловат" и довольно сильно устарел
(особенно если пытаться сэкономить на размере).
Так что модуль-браузер на основе WebUI был был бы тем что "доктор прописал" но вот беда там тоже ошибка ( возможно опять проблемы со старой десятой виндой но я вообще думаю что "лесхоз" должен работать даже на XP и Win 7 так что хорошо-бы найти или сделать "лайт версию" WebUI "без излишеств" (то есть просто запуск стандартного браузера "в окне без рамок")).
Зы
Запуск стандартного браузера "напрямую" был бы идеальным вариантом, но вот беда этот фокус не позволяет использовать интеграцию через SetParent (как минимум у меня это не выходит и упорно получается "пусте окно" ).
