Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№109-01-2006 20:22:37

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Здравствуйте.

Возникла необходимость в программу на С++ встроить Gecko-броузер вместо IE.
Читал мануал на mozilla.org - видимо он очень устарел т.к. в дистрибутиве Gecko SDK есть не все файлы, указанные в мануале.

Может кто знает где найти примеры встраивания Mozilla'овского броузера в приложение. Или мануал корректный. Буду рад даже пошаговому текстуальному описанию, в общем, любой помощи.

Gecko SDK впервые увидел вчера, было бы больше опыта - не спрашивал бы.
Скачал wxEmbed-пример, но там, видимо, чего-то нехватает... думаю в ближайшие пару дней разберусь, чего именно.

Заранее всем спасибо.

Отсутствует

 

№209-01-2006 21:32:26

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

T-Rex пишет

Читал мануал на mozilla.org - видимо он очень устарел т.к. в дистрибутиве Gecko SDK есть не все файлы, указанные в мануале.

Чего именно?

Отсутствует

 

№309-01-2006 22:08:21

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Appendix A: Setting up the Gecko SDK

...
When you extract the SDK, it should have the layout seen in
http://www.mozilla.org/projects/xpcom/book/cxc/html/appA.html#1001431

На скриншоте больше 2х десятков папок, в дистрибутиве только 4 - bin, include, idl, lib

Сырцов Мозиллы не качал - мне нужно чтобы после встраивания броузера, программа не подходила под описание derivative work - т.е. не основывалась на сырцыах броузера, а только на SDK.

Отсутствует

 

№409-01-2006 22:42:20

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Структуру, AFAIK, поменяли. Мне же хотелось узнать следующее: каких именно файлов из мануала не хватает?

Отсутствует

 

№509-01-2006 22:52:28

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Похоже, если структуру поменяли, то теперь указанные файлы называются по-другому. В либах 7 штук *.lib файлов, в мануале 5. Это из явно видимых отличий. Больше пока сказать не берусь.

Mash, Вы, часом, не подскажете пошаговое руководство по настройке SDK в том виде, в котором оно сейчас есть? Или руководство по встраиванию Gecko для начинающих?

Отсутствует

 

№609-01-2006 23:40:17

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Попытался сейчас из исходников открыть wxEmbed.dsp, но моя студия (2003) ругнулась при конвертации: "Cannot load the project due to a corrupt project file". Да и README ссылаются на какую-то wxMozilla. Откровенно говоря, я в этом деле профан, т.к. мои знания плюсов оставляют желать лучшего, просто темой заинтересовался. Максимум, что я делал, так это писал пару-тройку строк, пытаясь прикрутить SQLite к этому примеру.

Подсказать наверное не смогу, а то боюсь что вообще не в ту степь уведу. :)

Попробуйте спросить на xpoint; там есть более толковые в этих вопросах люди.

Отсутствует

 

№710-01-2006 00:37:27

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Mash, если решитесь ради академического интереса все-таки довести пример до рабочего состояния - дайте мне знать. e-mail в профиле. Могу помочь с wxWidgets (wxEmbed на ней основывается). Там, в идеале, должен получиться кросс-платформенный проект.

Кстати сказать, после копания в мэйкфайле примера, пришел к выводу, что пример для компиляции требует исходник Мозиллы.

А за ссылочки спасибо - пойду посмотрю что под ними :)

Отсутствует

 

№810-01-2006 00:39:54

lakostis
Administrator
 
Группа: Administrators
Откуда: /dev/urandom
Зарегистрирован: 07-10-2004
Сообщений: 1300
Веб-сайт

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Возможно, Вам стоит подписаться на mozilla-devel@lists.altlinux.org и обсудить эту проблему там.


Все микробы умрут

Отсутствует

 

№910-01-2006 01:03:34

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Спасибо, просмотрел темы дискуссий, там 80% Linux-related, но иногда попадаются и по Win32...

Отсутствует

 

№1010-01-2006 13:04:06

TLev
Участник
 
Группа: Members
Зарегистрирован: 18-06-2005
Сообщений: 317

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Standard Mozilla embedding example application for win32. Basic browser, menus, toolbar, URLbar, html area.

-http://lxr.mozilla.org/seamonkey/source/embedding/tests/mfcembed/MfcEmbed.cpp

Отсутствует

 

№1110-01-2006 21:18:50

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Во всех примерах, MFCEmbed, wxEmbed и т.д. нехватает многих файлов (скачал папку целиком, в некоторых html-файлах, в которых должен быть исходный код, так и написано, "This file does not exist"). С момента их написания, видимо, API успело достаточно сильно измениться. пытаюсь собрать wxEmbed - ничего не получается... пока вот, почти избавился от разногласий в версиях API, но все-равно, многих заголовков нехватает, наверное прийдется качать весь исходник Мозиллы :( с моим соединением на это неделя уйдет :(

Отсутствует

 

№1211-01-2006 00:07:35

ViRUS
ДМБ 2008
 
Группа: Extensions
Откуда: Xa!
Зарегистрирован: 05-11-2004
Сообщений: 1468

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

T-Rex
Хе-хе! Скажу больше, файлов не хватает и в исходниках! API не изменилось (изменилось, но не сильно), протсо многие файлы генерируются во время сборки из исходников. Кстати, MFCEmbed входит в сорцы в качестве примера и во время сборки тоже компилируется...


Непослушные локоны горничной выбивались из-под её кружевного фартука...

Отсутствует

 

№1311-01-2006 00:49:19

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Ага, значит, теоретически после получения исходника Мозиллы у меня есть шанс еще и рабочий пример получить... ладно...
Хотя вот кусок кода, который во всех примерах... в SDK ни одного упоминания о NS_IWEBBROWSER_IID нету (наверное только в сырцах найти можно)... ну хоть об этом-то они могли позаботиться?

nsresult rv;
mWebBrowser = do_CreateInstance(NS_IWEBBROWSER_IID, &rv);
if (!mWebBrowser || NS_FAILED(rv)) return NS_ERROR_FAILURE;

Отредактировано T-Rex (11-01-2006 00:50:19)

Отсутствует

 

№1411-01-2006 01:13:32

ViRUS
ДМБ 2008
 
Группа: Extensions
Откуда: Xa!
Зарегистрирован: 05-11-2004
Сообщений: 1468

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

T-Rex
И не только теоретически! :) У меня собралось... NS_IWEBBROWSER_IID будет в одном из заголовков сгенерированных при сборке...

ЗЫ: Начсёт "могли позаботится" - опытным путём выяснил, что вид генерируемых заголовков и статических библиотек сильно зависит от ключей указанных при сборке, видимо поэтому они и не включены в комплект...

Отредактировано ViRUS (11-01-2006 01:16:38)


Непослушные локоны горничной выбивались из-под её кружевного фартука...

Отсутствует

 

№1511-01-2006 02:25:30

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Черт... видимо, с таким раскладом, вся моя работа подпадает под описание derivative work. Надо тогда думать как сделать так чтобы мой компонент поставлялся без исходного кода Mozilla, в противном случае прийдется делать его OpenSource, что неприемлемо :(

Есть здесь люди, которые могут толково объяснить, в каких случаях производные библиотеки-компоненты-программы, использующие код Mozilla должны распостраняться с исходным кодом? Macromedia, на сколько я помню, выпустила какой-то продукт на основе Mozilla'овского движка, но он не OpenSource.

Отсутствует

 

№1611-01-2006 07:02:20

Mash
Участник
 
Группа: Extensions
Зарегистрирован: 09-04-2005
Сообщений: 620
Веб-сайт

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

T-Rex пишет

наверное прийдется качать весь исходник Мозиллы с моим соединением на это неделя уйдет

Максимум 4-5 часов на дайлапе: tar.bz2 <-- http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.8b1/source/

Оно того стоит.

Отсутствует

 

№1711-01-2006 16:01:22

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Уже качнул... ;) вечером сяду разбирать сырцы и попробую скомпилить.
Там они еще предлагали тулзы для компиляции wintools-dotnet.zip. Я так полагаю, что это для VS.NET, еще не смотрел.
Скачал ActiveX - да, вроде работает. Только там надо еще разобраться как ЭТО вставить в приложение на wxWidgets (тогда о кросс-платфоренности прийдется забыть). И еще как перевести его в режим редактирования... думаю в Google Groups найду.

Отсутствует

 

№1811-01-2006 18:52:39

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Скажите пожалуйста, а есть ли возможность собрать Mozilla без использования cygwin? Не хотелось бы иметь зависимость от cygwin1.dll

ЗЫ: А есть ли в природе готовые файлы проекта для сборки в VisualStudio.NET ?

Отредактировано T-Rex (11-01-2006 19:02:17)

Отсутствует

 

№1912-01-2006 00:37:35

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Вот пошаговое описание действий:

- скачал сырцы Мозиллы, распаковал в C:/mozilla
- скачал тулзы для компиляции в VS.NET 2003, распаковал, по ходу переименовав папку buildtools в c:/mozilla/moztools
- скачал cygwin, заинсталил в c:/mozilla/cygwin
- скачал ActivePerl, заинсталил в c:/mozilla/perl
- скачал библиотеки для MS VC++ 2003

http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/vc71-glib-1.2.10-bin.zip
http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/vc71-libIDL-0.6.8-bin.zip

- написал такой батник для настроек переменных среды

ENV.BAT

Выделить код

Код:

@ECHO OFF

set HOME=c:\mozilla

set MOZ_BITS=32
set MOZ_TOOLS=%HOME%\moztools
set OS_TARGET=WINNT
set WINOS=%OS_TARGET%
set _MSC_VER=1310

cd %MOZ_TOOLS%\windows
call install.bat
cd %HOME%

set GLIB_PREFIX=C:\mozilla\win32build\vc71

set LIBIDL_PREFIX=C:\mozilla\win32build\vc71

SET PATH=C:\mozilla\win32build\vc71;%PATH%
SET PATH=C:\mozilla\win32build\vc71\bin;%PATH%
SET PATH=C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin;%PATH%
SET PATH=C:\Program Files\Microsoft Platform SDK\Bin;%PATH%
SET PATH=%SystemRoot%\system32;%PATH%
SET PATH=%SystemRoot%;%PATH%
SET PATH=%SystemRoot%\System32\wbem;%PATH%
SET PATH=C:\mozilla\Perl\bin;%PATH%
SET PATH=C:\mozilla\cygwin\bin;%PATH%
SET PATH=C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE;%PATH%
SET PATH=C:\Program Files\Microsoft Platform SDK\Bin\Win64;%PATH%

set PATH=%PATH%;%MOZ_TOOLS%\BIN
set PATH=%PATH%;%HOME%\PERL\BIN
set PATH=%PATH%;%HOME%\CygWin\bin
set PATH=%PATH%;%HOME%\moztools\windows\include

SET LIB=
SET LIB=%LIB%;C:\Program Files\Microsoft Platform SDK\Lib;
SET LIB=%LIB%;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib;
SET LIB=%LIB%;C:\Program Files\Microsoft SDK\Lib\IA64

set DISABLE_TESTS=0

set MOZ_SRC=%HOME%
set MOZ_NO_ACTIVEX_SUPPORT=1
set CONFIG_SHELL=SH.EXE

call "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\VCVARS32.BAT"

Этот батник проинсталил мне тулзы и настроил переменные среды... вроде не ругнулся ни разу

- запустил cygwin, перешел в c:/mozilla
- открыл cmd запустил env.bat
- После этого запускаю

Выделить код

Код:

nmake -f client.mk build

Выдает ошибку

Выделить код

Код:

Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation.  All rights reserved.

client.mk(101) : fatal error U1033: syntax error : '=' unexpected
Stop.

Пробовал запускать из cygwin, выдает точно такую же ошибку :(
Ошибка возникает на установке переменных среды в мэйкфайле

Выделить код

Код:

MODULES_suite :=                              \
  
SeaMonkeyAll                                  \
  
mozilla/ipc/ipcd                              \
  
mozilla/modules/libpr0n                       \
  
mozilla/accessible                            \
  
mozilla/security/manager                      \
  
mozilla/toolkit                               \
  
mozilla/storage                               \
  
mozilla/db/sqlite3                            \
  
$(NULL)

Подскажите плз., что я упустил... почему ругается?

Отсутствует

 

№2012-01-2006 04:07:23

ViRUS
ДМБ 2008
 
Группа: Extensions
Откуда: Xa!
Зарегистрирован: 05-11-2004
Сообщений: 1468

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Скажите пожалуйста, а есть ли возможность собрать Mozilla без использования cygwin? Не хотелось бы иметь зависимость от cygwin1.dll

Цугвин нужен только на этапе сборке - используются утилиты из него. Сборка от cygwin1.dll не зависит.

ЗЫ: А есть ли в природе готовые файлы проекта для сборки в VisualStudio.NET ?

К сожалению природа пока на это не разродилась...

nmake -f client.mk build

А по рукам? :D nmake - это Микрософтовый make. Юниксовых make-файлов не понимает. Тебе нужно делать так:

Выделить код

Код:

gmake -f client.mk

При этом последовательность действий такая:
- запускаешь cmd
- потом env.bat (всё из того же cmd!)
- потом цугвин (опять же из уже запущенного cmd!)
- делаешь make.


Непослушные локоны горничной выбивались из-под её кружевного фартука...

Отсутствует

 

№2112-01-2006 04:16:27

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

На счет nmake - нашел в одной из мурзилок в сети...
На счет gmake - муторно ему от этого мэйкфайла
На счет cygwin - скушал вроде мэйкфайл... сейчас бьюсь с зависимостями :)

Отсутствует

 

№2212-01-2006 18:45:54

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Я не знаю как... но оно собралось %)
Правда пришлось сделать ему NO_MFC (неприятно, конечно, но что ж тут поделаешь) и MOZ_NO_ACTIVEX_SUPPORT (а то ATL из PlatformSDK оно неадекватно воспринимает).

Не знаю, получалось ли у кого-нибудь собрать Мозиллу не имея предустановленно VisualStudio (используя только бесплатный VC++ ToolKit 2003 и PSDK), но ИМХО это невозможно (т.к. в ATL-заголовках PSDK указаны библиотеки, которые в самой PSDK имеются только для 64-битных процессоров)

А еще я пришел к выводу, что не стОит слушать всяких умных дядек из-за бугра, т.к. их мануалы все-равно не работают (почти правильный мануал нашел здесь на mozilla.ru - по сборке FF и TB из сырцов)... немного пришлось позаморачиваться, но эффект есть. :)

Всем спасибо за помощь со сборкой. Но я думаю что это еще не конец :)

Отредактировано T-Rex (12-01-2006 18:49:31)

Отсутствует

 

№2312-01-2006 21:15:50

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

У меня получилось собрать пример wxEmbed, но оказалось что Мозилла библиотеки подгружает динамически (MultiThreaded DLL), сам файл mozilla.exe весит всего 64 КБ, что только подтверждает мои догадки, а мне нужно чтобы подгружала статически (MultiThreaded), дабы убрать зависимости при переносе на другую машину.

В файле mozilla/mozilla/.mozconfig есть строки

Выделить код

Код:

ac_add_options --disable-shared
ac_add_options --enable-static

... или .mozconfig у меня при сборке не использовался... или... одно из двух...

Не подскажете, какие переменные среды нужно установить перед сборкой для обеспечения статической линковки библиотек?

Отредактировано T-Rex (12-01-2006 21:17:44)

Отсутствует

 

№2413-01-2006 03:03:23

T-Rex
Участник
 
Группа: Members
Зарегистрирован: 09-01-2006
Сообщений: 31

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

Как бы там ни было, примеры заработали, и моя проблема почти решена. У меня получилось перевести окно броузера в примере в режим редактирования, что изначально и было целью :) осталось только разобраться, как сохранять внесенные изменения. Жаль, конечно, что прийдется таскать за собой кучу библиотек (не мозилловских), но это меньшее из зол.

Как-нибудб на досуге попробую качнуть исходник FF и постараюсь прикрутить его библиотеки к примеру.

Если есть необходимость, могу выложить куда-нибудь полное описание действий по сборке Mozilla-1.8b1, в помощь остальным страждущим.

Отсутствует

 

№2513-01-2006 03:11:20

Viper
Участник
 
Группа: Extensions
Откуда: Нижний Новгород
Зарегистрирован: 24-12-2004
Сообщений: 2092

Re: Нужна помощь по встраиванию Gecko-броузера в приложение на С++

T-Rex Выкладвай сюда (или куда-нибудь ещё :)), перенесём в wiki.


---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]