[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/09 15:13 / Filesize : 225 KB / Number-of Response : 901
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Geckoベースのブラウザを作ろう。



1 名前:デフォルトの名無しさん [02/06/08 23:31]
Mozillaも1.0がでてAPIが固定されたことだし、ここいらでGeckoベースのブラウザを開発してみませんか?


411 名前:デフォルトの名無しさん mailto:sage [03/05/22 20:10]

「ブラウザから」ってのが意味不明。
画面の実測の大きさ?WYSIWYGは10年前に崩壊したよ。

412 名前:デフォルトの名無しさん mailto:sage [03/05/23 01:04]
CSS2を解するブラウザが現れたならprint系のプロパティを解釈してくれるでしょうけどね

413 名前:山崎渉 mailto:(^^) [03/05/28 12:58]
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

414 名前:デフォルトの名無しさん [03/06/04 04:23]
この中でVC++使える人いる?
いいブラウザのソースあるんだけど

415 名前:デフォルトの名無しさん mailto:sage [03/06/10 18:17]
399をインストールしました。
ですが、TGeckoBrowserだけを貼り付けて実行してみたのですが

function TGeckoBrowser.GetCurrentProfile: WideString;の
rv := sProfileService.GetCurrentProfile(str);部分でエラーが出てしまいます。

CurrentProfileNameも指定しているのですが、なぜでしょうか?

こちらの環境はwin2k、Delphi6、Mozilla1.です。

あと、英語ですが良さそうなページがあったので張っておきます。(流し読みしたからもしかしたら関係ないページかも……)
www.mozilla.org/projects/xpcom/book/cxc/

416 名前:デフォルトの名無しさん [03/06/17 22:57]
なんなとなく、あげ

417 名前:デフォルトの名無しさん mailto:sage [03/06/18 19:11]
C++でGeckoをやり始めたんですが、
NS_InitXPCOM2は成功するのにNS_InitEmbeddedが失敗します。
質問というより報告ですが、何か心当たりがある方は情報いただけると嬉しいです。

418 名前:417 mailto:sage [03/06/22 19:12]
Geckoの基本を教えてください。環境はWindows2000+MozillaFirebird0.6です。

nsCOMPtr<nsIWebBrowser> webBrowser(do_CreateInstance(NS_WEBBROWSER_CONTRACTID));

でnsIWebBrowserを得るまでのプロセスが分かりません。
調べたところ、NS_InitEmbeddingを行えばよさそうですが、これに失敗します。

現状では、
NS_InitXPCOM2は成功します。
NS_GetComponentRegistrar、NS_GetServiceManager、NS_GetComponentManagerは成功します。
nsIComponentRegistrar#AutoRegisterは失敗します。(NS_InitEmbeddingの失敗の原因はこれのようです)
do_CreateInstanceは失敗します。

どなたかご教授ください。

419 名前:417 mailto:sage [03/06/25 14:25]
自己解決しました。どうやらMozillaFirebird0.6ではダメみたいです。

何故かDOSプロンプトからC:\Program Files\MozillaFirebirdにCDできなかったので、
もしやと思いGRE入れてやってみたらうまくいきました。
#CDできないのはすごく謎



420 名前:デフォルトの名無しさん mailto:sage [03/06/27 01:52]
ディレクトリ名にスペースが入ってるからだろ>Program Files。
ショートネームにしる。

421 名前:417 mailto:sage [03/06/27 05:28]
>>420
いえいえ、そこまで阿呆じゃないつもりです。ショートネームでも無理ぽ。
C:\Progra~1> DIR /X
(ry
2003/06/22 02:47 <DIR> MozillaFirebird
2002/10/01 03:25 <DIR> NETMEE~1 NetMeeting
2003/06/21 12:08 <DIR> nsmsgs
(ry

C:\PROGRA~1>cd MozillaFirebird
ディレクトリの指定が違います.

C:\PROGRA~1>cd Mozill~1
ディレクトリの指定が違います.

C:\PROGRA~1>cd NetMeeting
ディレクトリの指定が違います.

C:\PROGRA~1>cd NetMee~1

C:\PROGRA~1\NETMEE~1>cd ..

C:\PROGRA~1>cd nsmsgs

C:\PROGRA~1\NSMSGS>

422 名前:417 mailto:sage [03/06/27 05:38]
長々と貼ってすいません。結局、DIR /Xで見たところショートネームが定義されてないんです。
#よく考えたら結構阿呆なことかも。windows板かPC初心者板逝ってきます。

ところで質問です。
現在、Windows2000+GRE 1.4f_2003062408+C++でやっているんですが、
nsIBaseWindow#Createで固まってしまいます。

nsCOMPtr<nsIBaseWindow> baseWindow = do_QueryInterface(webBrowser);
baseWindow->InitWindow(nativeWindow, nsnull, 10, 10, 100, 100);
baseWindow->Create();

原因が分かる方、心当たりのある方はいらっしゃいませんか?

こちらの情報が少ないですが、何が必要な情報なのかよく分かりません。
取り敢えずNS_InitEmbedding,do_CreateInstance(NS_WEBBROWSER_CONTRACTID)は成功しています。

423 名前:デフォルトの名無しさん mailto:sage [03/06/27 10:22]
>>422
www.mozilla.org/projects/embedding/embedoverview/EmbeddingBasics14.html
見ただけだけど、NS_InitEmbedding() から nsIBaseWindow#InitWindow のあいだの手順は
ちゃんとやってる?

424 名前:417 mailto:sage [03/06/27 13:08]
>>423
nsIBaseWindow#Create(); までで異なる点はSetContainerWindowするクラスです。
CBrowserImpl は

nsIInterfaceRequestor,
nsIWebBrowserChrome,
nsIWebBrowserChromeFocus,
nsIEmbeddingSiteWindow,
nsIWebProgressListener,
nsIContextMenuListener,
nsSupportsWeakReference,
nsISHistoryListener
nsIStreamListener,
nsITooltipListener,
nsIURIContentListener

をimplementしていますが、こちらのWebBrowserSiteObjectは
nsIWebBrowserChromeのみimplementしています。
今What You Provideを眺めていたところ、nsIEmbeddingSiteWindow,nsIWebProgressListener が
must be implementedだったのに気付いたので今からやってみます。

425 名前:417 mailto:sage [03/06/27 13:30]
nsIWebBrowserChrome、nsIEmbeddingSiteWindow、nsIWebProgressListenerを実装してみましたが、
全てのメソッドがnsIBaseWindow#Createまでに一度も呼ばれていませんでした(関数コールするとexitするようにしています)
もう少しがんばってみます(できたら稚拙なページで最小限の手順を公開させていただきます)

426 名前:417 mailto:sage [03/06/28 15:04]
www.mozilla.org/projects/embedding/PublicAPIs.html

www.mozilla.org/projects/embedding/public-apis-image3.gif
にWebBrowserSiteObject,
nsIWebBrowserChrome,
nsIEmbeddingSiteWindow,
nsIWebProgressListener,
nsIContextMenuListener,
nsIPrompt
をimplementしなければならないと書いてあったので、これらのインターフェイスを
exitするコードにしましたが、結果は同じようにnsIBaseWindow#Createで固まりました。
何が足らないんだろう。。次のレスで今の状態を書きますので「お前はアフォか」と思われる点があれば指摘してください。

427 名前:デフォルトの名無しさん mailto:sage [03/06/28 15:07]
結論:初心者がWebブラウザ作りたい時は、VBにIEコンポーネントをぺたり。

428 名前:417 mailto:sage [03/06/28 15:10]
WNDCLASSEX wc
RegisterClassEx(&wc); //いつものアレ
nsCOMPtr<nsILocalFile> appDir;
NS_NewLocalFile(NS_LITERAL_STRING("D:\\program\\mozilla\\GRE"), 0, getter_AddRefs(appDir)); // GREディレクトリ取得
NS_InitEmbedding(appDir, nsnull); // 初期化
HWND hWnd = CreateWindow(szClassNme, "", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, ghInstanceApp, NULL); // 窓を作る
ShowWindow(hWnd, SW_SHOW);UpdateWindow(hWnd); // 表示

// 以下メッセージループ(winEmbed.cppから流用)

HANDLE hFakeEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
PRBool active = PR_TRUE;
while (active) {
while (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)) {
if (!::GetMessage(&msg, NULL, 0, 0)) {
active = PR_FALSE;
break;
}
PRBool wasHandled = PR_FALSE;
::NS_HandleEmbeddingEvent(msg, wasHandled);
if (!wasHandled) {
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
::MsgWaitForMultipleObjects(1, &hFakeEvent, FALSE, 100, QS_ALLEVENTS);
}
::CloseHandle(hFakeEvent);


429 名前:417 mailto:sage [03/06/28 15:17]
// で、作った窓のウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
if (左クリックされたら) {
newWnd = CreateWindow(szClassNme, "", WS_CHILD | WS_VISIBLE |WS_BORDER|WS_VSCROLL, 0, 0, 400, 400, hWnd, NULL, ghInstanceApp, NULL);
// ウェブブラウザ
nsCOMPtr<nsIWebBrowser> webBrowser;
NS_ENSURE_TRUE(webBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID), NS_ERROR_FAILURE);
// サイトオブジェクト(WebBrowserSiteObject implement >>426
webBrowserSiteObject = new WebBrowserSiteObject;
NS_ENSURE_TRUE(webBrowserSiteObject, NS_ERROR_OUT_OF_MEMORY);
NS_ADDREF(webBrowserSiteObject);
// クローム登録
NS_ENSURE_SUCCESS(webBrowser->SetContainerWindow(NS_STATIC_CAST(nsIWebBrowserChrome*, webBrowserSiteObject)), NS_ERROR_FAILURE);
// セットアップ(まだよく分かってません)
nsCOMPtr<nsIWebBrowserSetup> setup;
NS_ENSURE_TRUE(setup = do_QueryInterface(webBrowser), NS_ERROR_FAILURE);
setup->SetProperty(nsIWebBrowserSetup::SETUP_IS_CHROME_WRAPPER, PR_TRUE);
// ベースウィンドウ
nsCOMPtr<nsIBaseWindow> baseWindow;
NS_ENSURE_TRUE(baseWindow = do_QueryInterface(webBrowser), NS_ERROR_FAILURE);
// 新しく作った子ウィンドウで初期化
NS_ENSURE_SUCCESS(baseWindow->InitWindow(nsNativeWidget(newWnd), nsnull, 10,10,100,100),NS_ERROR_FAILURE);
// Create(ここが無限ループになる)
cout << "出力される" <<endl;
NS_ENSURE_SUCCESS(baseWindow->Create(), NS_ERROR_FAILURE);
cout << "出力されない" <<endl;
}

以上です。何かあればよろしくお願いします。



430 名前:417 mailto:sage [03/06/28 15:26]
>>426間違えてました。must be implementedなのはnsIWebBrowserChromeと
nsWebBrowserSiteWindowの2つだけでした。失礼。

431 名前:417 mailto:sage [03/06/28 16:51]
うぅ・・・自己解決しました。
GRE使うのをやめてmozilla1.0.1にするとnsIBaseWindow#Createが無事帰ってきました。
mozilla1.4rc3でも試しましたが、きちんとnsIBaseWindow#Createは帰ってきました。
まだ何故かnsIBaseWindow#SetVisibility(PR_TRUE), nsIWebNavigation#LoadURIをしても表示されませんが、
一歩前進した感じです。(GREはまだ手を出しちゃいけないのかな)

432 名前:デフォルトの名無しさん [03/06/28 18:50]
長文コピペウザイ。

433 名前:417 mailto:sage [03/06/28 19:31]
>>432
すみません。Geckoの処理は長いので丸コピしたわけではないです。(見れば分かると思いますが)
必要な部分だけ選んだんですがそれでも長いですね。

434 名前:417 mailto:sage [03/06/30 01:44]
取り敢えず動くようになりましたのでこれで消えます。長々と失礼しました。

435 名前:デフォルトの名無しさん [03/06/30 22:41]
還元無しかよ!

436 名前:417 mailto:sage [03/06/30 23:15]
>>435
いや、>>425で言った通り、ページを作ってますよ。
取り敢えず極限まで小さくしたソースはこちらにあります。
ttp://www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/cpp_index.html
今解説(らしきもの)を書いてます。

437 名前:デフォルトの名無しさん mailto:sage [03/07/01 16:43]
>>417
ガンガレ

438 名前:デフォルトの名無しさん mailto:sage [03/07/01 22:47]
Geckoを使って、モジラよりショボイWebブラウザ作って何がしたいのだろう。

439 名前:デフォルトの名無しさん mailto:sage [03/07/01 23:26]
>>438
Mozilla糞
pc2.2ch.net/test/read.cgi/software/1020350827/




440 名前:デフォルトの名無しさん mailto:sage [03/07/02 00:03]
>>438
別にブラウザしか作れないわけじゃないだろう。
Geckoはブラウザじゃなくてただのレンダリングエンジン。

441 名前:デフォルトの名無しさん mailto:sage [03/07/03 15:12]
>>436のアドレス変わりました。
www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/MinimumGecko.html
です。解説は
www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/
で、トップは
www004.upp.so-net.ne.jp/rcl/program/gecko/
です。

442 名前:デフォルトの名無しさん [03/07/03 17:09]
>>441
おつかれ〜。いろいろ参考にさしてもらうね。

443 名前:デフォルトの名無しさん mailto:sage [03/07/03 23:08]
>>440
Geckoを使った、Webブラウザ以外のAPって何かある?

444 名前:デフォルトの名無しさん mailto:sage [03/07/03 23:22]
>>443
www.oeone.com/

445 名前:デフォルトの名無しさん mailto:sage [03/07/03 23:34]
>>443
# Komodo (IDE)
# Chatzilla (IRCクライアント)
# Games (MozInvaders、Xultris、その他)
# Jabberzilla (インスタント・メッセージ)

使ってないからどんなものかは知らんけどね。
と、2chブラウザとかもある。あっ、あれはXULアプリか。

446 名前:デフォルトの名無しさん mailto:sage [03/07/04 14:02]
>>443
ByzantineOS
(アプリかって言われると微妙だけど)

447 名前:デフォルトの名無しさん [03/07/05 00:11]
>>446
ByzantineOSって、linuxのディストリビューション?

448 名前:デフォルトの名無しさん mailto:sage [03/07/05 00:46]
>>446
XULでUIを実現していてて、CD1枚入れれば起動できるOSだったよな。
ドンキーコングが遊べるのが謎。
ネタ用にいつも持ち歩いてるよ。

449 名前:デフォルトの名無しさん mailto:sage [03/07/05 12:08]
XULってGeckoが処理するの?



450 名前:デフォルトの名無しさん mailto:sage [03/07/05 12:38]
表示はね

451 名前:デフォルトの名無しさん mailto:age [03/07/13 20:52]
保守

452 名前:デフォルトの名無しさん mailto:sage [03/07/13 21:43]
>>ドンキーコングが遊べるのが謎
著作権違反だろ

453 名前:デフォルトの名無しさん mailto:sage [03/07/14 04:58]
windows2000でMinGW-3.0.0-rc-1, gecko-sdk-win32-1.4, mozilla-source-1.4を用いて
ttp://www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/MinimumGecko.html
にある最小のソースをコンパイルしてみたのですが失敗しました。
ディレクトリ構成は以下のようにしています。
gecko-sdk/
mozilla/
MinimumGecko/ ここでmakeしています。

Makefileに不備があるのでしょうか。分かる方、お願いします。
以下にMakefileとエラーを示します。

454 名前:453 mailto:sage [03/07/14 05:00]
# 使用したMakefile
CPP = g++.exe
CC = gcc.exe
OBJ = main.o $(RES)
LINKOBJ = main.o $(RES)
LIBS = -L"D:/MinGW/lib" \
-L"../gecko-sdk/embed_base/bin" -L"../gecko-sdk/embedstring/bin" -L"../gecko-sdk/nspr/bin" \
-L"../gecko-sdk/xpcom/bin" -luser32 -lgdi32 -lembed_base_s -lembedstring -lplc4 -lxpcom
INCS = -I"D:/MinGW/include"
CXXINCS = -DMOZILLA_STRICT_API -DDEBUG -I"D:/MinGW/include/3.2.3" -I"D:/MinGW/include/3.2.3/mingw32" \
-I"D:/MinGW/include/3.2.3/backward" -I"D:/MinGW/include" \
-I"../gecko-sdk" -I"../gecko-sdk/embed_base/include" \
-I"../gecko-sdk/embedstring/include" -I"../gecko-sdk/nspr/include" \
-I"../gecko-sdk/string/include" -I"../gecko-sdk/webbrwsr/include" \
-I"../gecko-sdk/xpcom/include" -I"../mozilla/docshell/base" \
-I"../mozilla/embedding/browser/webBrowser" \
-I"../mozilla/string/public" -I"../mozilla/widget/public" \
-I"../mozilla/xpcom/base" -I"../mozilla/xpcom/components"
BIN = MinimumGecko.exe
CXXFLAGS = $(CXXINCS)
CFLAGS = $(INCS)

$(BIN): $(LINKOBJ)
$(CPP) $(LINKOBJ) -o "MinimumGecko.exe" $(LIBS)

main.o: main.cpp
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)


455 名前:453 mailto:sage [03/07/14 05:02]
以下コンパイルエラーです。
In file included from ../gecko-sdk/string/include/nsAString.h:36,
from ../gecko-sdk/xpcom/include/nsILocalFile.h:20,
from ../gecko-sdk/embed_base/include/nsEmbedAPI.h:28,
from main.cpp:2:
../gecko-sdk/string/include/nsCharTraits.h:383: ISO C++ forbids declaration of `difference_type' with no type
../gecko-sdk/string/include/nsCharTraits.h:383: `::difference_type' is not a valid declarator
../gecko-sdk/string/include/nsCharTraits.h:383: parse error before `;' token
../gecko-sdk/string/include/nsCharTraits.h:409: ISO C++ forbids declaration of `value_type' with no type
../gecko-sdk/string/include/nsCharTraits.h:409: `::value_type' is not a valid declarator
../gecko-sdk/string/include/nsCharTraits.h:409: parse error before `*' token
../gecko-sdk/string/include/nsCharTraits.h:417: type specifier omitted for parameter `difference_type'
../gecko-sdk/string/include/nsCharTraits.h:417: parse error before `)' token
../gecko-sdk/string/include/nsCharTraits.h:418: ISO C++ forbids defining types within return type
../gecko-sdk/string/include/nsCharTraits.h:418: two or more data types in declaration of `advance'
../gecko-sdk/string/include/nsCharTraits.h:418: semicolon missing after declaration of `struct nsCharSourceTraits<InputIterator>'
../gecko-sdk/string/include/nsCharTraits.h:421: parse error before `}' token
../gecko-sdk/string/include/nsCharTraits.h:473: non-template type ` nsCharSourceTraits' used as a template
../gecko-sdk/string/include/nsCharTraits.h:474: confused by earlier errors, bailing out
make: *** [main.o]

456 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/14 13:37]
gecko-sdk-winはgccでコンパイルできないんですよ。cl.exeを使うとできます。
VC++を持ってなければ、NET Framework SDKを使うと良いと思います。

どうしてもgccでやるなら、gecko-sdk-winの*.libとgecko-sdk-linuxの*.hを使うといけるかも・・・。


457 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/14 13:45]
ごめん。>>456の最後多分無理だわ。やっぱWin上ではcl.exe使うしかないかも。

458 名前:??? [03/07/14 23:50]
ッ゚ホ(`Д´*)‭


459 名前:デフォルトの名無しさん mailto:sage [03/07/15 02:02]
mingw の場合は一度 mozilla を build するとできる mozilla/dist/sdk 内を
使えばいいのかも。

embed_base_s.lib -> libembed_base_s.a
embedstring.lib -> libembedstring.a
plc4.lib -> plc4.dll
xpcom.lib -> xpcom.dll

と思われるので注意(つーか自信ない、やってみるべか…)




460 名前:459 mailto:sage [03/07/15 08:51]
ちょっとやってみた。
・/cygdrive/e/build 内に mozilla/ を展開、
www5e.biglobe.ne.jp/~level0/mozilla/news200304.html#20030519_MinGW
を参考にMozillaをbuild (CVS checkout もしたのでソースは最新)
・/cygdrive/e/build/MinimumGecko/ 以下にMakefileを作成、
>>453-455 と違って、Mingw-2.0.0-3 を使用。
・ んで Make したら、以下のエラーメッセージ

main.cpp: In function `int main()':
main.cpp:60: invalid conversion from `const wchar_t*' to `const PRUnichar*'
main.cpp:60: initializing argument 1 of `nsEmbedString::nsEmbedString(const
PRUnichar*)'
make: *** [main.o] Error 1

あと一息かな?

461 名前:459 mailto:sage [03/07/15 08:55]
#使った Makefile
MINGW= /cygdrive/c/mingw
GECKO_SDK= ../mozilla/dist/sdk
MOZ_INC= ../mozilla/dist/include
CPP= g++
CC= gcc
OBJ= main.o $(RES)
LINKOBJ= main.o $(RES)
LIBS= -L$(MINGW)/lib -L$(GECKO_SDK)/embed_base/bin \
-L$(GECKO_SDK)/embedstring/bin -L$(GECKO_SDK)/nspr/bin \
-L$(GECKO_SDK)/xpcom/bin -luser32 -lgdi32 -lembed_base_s -lembedstring -lplc4 -lxpcom
INCS= -I$(MINGW)/include
CXXINCS= -DMOZILLA_STRICT_API -DDEBUG -I$(MINGW)/include/c++/3.2.2 \
-I$(MINGW)/include/c++/3.2.2/mingw32/bits -I$(MINGW)/include/c++/3.2.2/backward \
-I$(MINGW)/include -I$(GECKO_SDK) -I$(GECKO_SDK)/embed_base/include \
-I$(GECKO_SDK)/embedstring/include -I$(GECKO_SDK)/nspr/include \
-I$(GECKO_SDK)/string/include -I$(GECKO_SDK)/webbrwsr/include \
-I$(GECKO_SDK)/xpcom/include -I$(MOZ_INC)/docshell -I$(MOZ_INC)/webbrwsr \
-I$(MOZ_INC)/string -I$(MOZ_INC)/widget -I$(MOZ_INC)/xpcom

BIN= MinimumGecko.exe
CXXFLAGS= $(CXXINCS)
CFLAGS= $(INCS)
$(BIN): $(LINKOBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
main.o: main.cpp
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)

462 名前:山崎 渉 mailto:(^^) [03/07/15 09:39]

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

463 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/15 09:51]
>>460
やべー。そのエラーを見る限り俺が間違ってるっぽい。

L""はwchar_t*なんだけど、PRUnicharがwchar_tになってないからだと思う。
PRUnicharの型が何になってるのか、プリプロセスだけやって調べてみてもらえないかな。(prtypes.h#471辺りを参考
多分typedef PRUint16 PRUnicharになってると思うんだけど。

うーん。結構Stringには悩まされたんだよなあ。ドキュメントも古いし。

464 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/15 10:01]
ところで>>455のエラーの原因は何だった?
Mingw-2.0.0-3に変えたから起きなくなっただけなのかな。
それともbuildせないかんかった?
>>455はただの構文解析エラーだから*.libには関係ないと思うんだけど。

#ちなみにMakefileは貼らなくてもいいと思うよ。

465 名前:459 mailto:sage [03/07/15 12:07]
>>463
gcc -E でプリプロセス出してみたら
# 234 "../mozilla/dist/sdk/xpcom/include/nscore.h"
typedef PRUint16 PRUnichar;
ってなってたんで
lxr.mozilla.org/mozilla/source/xpcom/base/nscore.h#234
見て -D_WIN32 つけたらオブジェクトファイルのコンパイルは通りましたぁ。
でも exe 作る段階で、
main.o(.eh_frame+0x12):main.cpp: undefined reference to `___gxx_personality_v0'
/cygdrive/c/mingw/lib/libstdc++.a(vterminate.o)(.text+0xaf): undefined reference
to `__Unwind_SjLj_Register'
/cygdrive/c/mingw/lib/libstdc++.a(vterminate.o)(.text+0x127): undefined referenc
e to `__imp___iob'
/cygdrive/c/mingw/lib/libstdc++.a(vterminate.o)(.text+0x17e): undefined referenc
e to `__imp___iob'
/cygdrive/c/mingw/lib/libstdc++.a(new_opv.o)(.text+0x2f): undefined reference to
`__Unwind_SjLj_Register'
.....以下ぞろぞろとエラーが(T_T)
Mingw 固有の問題っぽいのでbug 203303見直してみますわ...

466 名前:459 mailto:sage [03/07/15 13:06]
言い忘れてたけど、わたしゃ >>453-455 とは別人っすよー

467 名前:459 mailto:sage [03/07/15 14:02]
スマソ、大ボケかましてましたわ。
MingwのPATHをcygwinの前に通しておくの忘れてた(汗
無事にコンパイル完了、mozilla/dist/bin に入れたら起動できました〜

468 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/15 22:59]
>>466
ああ、そうでしたか。何とタイムリーな。。。

では>>464の質問は>>453-455宛ということでよろしく。


469 名前:453 mailto:sage [03/07/15 23:50]
どうも453です。

>>はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro;さん
>ところで>>455のエラーの原因は何だった?
STL関係がおかしいのかと思い、STLportを入れたりしたのですがエラー内容は変わりませんでした。
MinGW-3.0.0-rc-1の前に試したMingw-2.0.0-3でも同じで原因はよくわかりません。

>gecko-sdk-winはgccでコンパイルできないんですよ。cl.exeを使うとできます。
>VC++を持ってなければ、NET Framework SDKを使うと良いと思います。
.NET Frame SDKでcl.exeが使えるって初めて知りました。早速インストールしてみます。

>>459さん
>mingw の場合は一度 mozilla を build するとできる mozilla/dist/sdk 内を
>使えばいいのかも。
そうか、その手がありました。

さっそく色々試してみたいと思います。
はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro;さん、459さん色々と情報ありがとうございました。



470 名前:459=467 mailto:sage [03/07/16 18:43]
作ったMinimumGecko.exeをmozilla/dist/greのほうにつっこめないかなーと
思ってやってみたら、
・dist/bin/components/ 以下 gkwidget.dll, xpconnect.xpt, jsdom.dll
を dist/gre/components にコピる。
・dist/bin/chrome/ , dist/bin/res/ , dist/bin/defaults/ 以下を
dist/gre/ 以下にコピる。
(ftpにあるembed-win32.zip 内の上の3フォルダのほうが中身が少なくてすむ)
これでめでたくMinimumGecko.exeが動いた。

syleraもこの調子でgreのみで動かせないかなーと思ったら、マニュアルに
---------------------------------------------
Mozilla1.4インストーラ付やNetscape7.1では上記の方法ではSyleraは起動しません。
これらでSyleraを使用する場合は
C:\Program Files\Common Files\mozilla.org\GRE\1.4f_2003062408(最後のフォルダ名は数字やアルファベットが異なる可能性があります)
に、sylera.lzhを展開してできたファイル全てと
mozilla.exe又はnetscape.exeのあるフォルダ(C:\Program Files\mozilla.org\Mozilla or C:\Program Files\Netscape)にある「chrome」「default」「res」という3つのフォルダをコピーして下さい
これで使用できるようになります。
-----------------------------------------
きちんと書いてあるし(汗 components\ 以下のもので足りないものは無い様子。
installer を普段使わないんで、GRE\<ver no.>\ 以下と該当3フォルダのみ
適当なフォルダにコピって中にsylera置けば普通に使えるようだ。

GREの使い方でした〜>はしのえみ好き〜(略っ)さま

471 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/18 12:17]
>>470
おお!素晴らしい!
早速今晩試してみてページの方を更新しておきます。
ありがとう!

472 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/18 20:39]
GRE入れて試してみました。1.5b_2003071708

defaultsさえあれば取り敢えず動きますね。
>>431はこれが原因だったのですね。

ちなみにchromeはUI関係(消すとスクロールバーが無くなる)で
resはcss関係(消すとレンダリングがおかしくなる)ですね。色々削れそう。

とにかくホントにありがとう>>459=467=470さま

473 名前:デフォルトの名無しさん mailto:sage [03/07/18 21:03]
&rlo;
ッ゚ホ(`Д´*)
&lro;

474 名前:デフォルトの名無しさん mailto:age [03/07/20 02:12]
うざったい荒らしが減るのなら。

475 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/20 22:31]
質問です。
nsIWebBrowserChrome#SetStatus(ステータスバー変更通知)が呼ばれないのですが、何が原因でしょうか?
nsIWebBrowser#SetContainerWindowはしてあり、
nsIEmbeddingSiteWindow#SetTitle(タイトル変更通知)は呼ばれます。

nsIWebBrowserChrome#SetStatusについて、API Referenceでは
>Called when the status text in the chrome needs to be updated (e.g., when mousing over a link).
と書いてあるのでリンクにマウスをhoverさせると呼ばれるように思えるんですが。

476 名前:470 mailto:sage [03/07/20 23:30]
>>475
nsIWebBrowserChrome#SetStatus の実装で update するメソッドを呼ぶ必要があります。
lxr.mozilla.org/mozilla/source/embedding/tests/mfcembed/BrowserImpl.cpp#144
環境依存するので、独自に実装する必要があるようです。
lxr.mozilla.org/mozilla/source/embedding/tests/mfcembed/BrowserFrameGlue.cpp#64
lxr.mozilla.org/mozilla/source/embedding/tests/winEmbed/winEmbed.cpp#1207

477 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/20 23:52]
>>476
レスどうも。
ところが、UpdateStatusBarTextを呼ぶためのSetStatusが呼ばれないので困っているんですが。
私、何か勘違いしてるんでしょうか?

478 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/22 03:22]
うーん。nsIInterfaceRequestorの実装等をしていたら急にSetStatusが呼ばれるようになりました。
原因調べるのが面倒なので>>475-の質問はなかったことに。。。

479 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/22 03:31]
あぅ。面倒とか言いながらやってしまいました。
やっぱりnsIInterfaceRequestorを実装しないとnsIWebBrowserChrome#SetStatusが呼ばれないようです。

NS_IMETHODIMP WebBrowserChrome::GetInterface(const nsIID& aIID, void** aInterface) {
return QueryInterface(aIID, aInterface);
}
これだけでも良いみたいです。スレ汚し失礼しました。



480 名前:デフォルトの名無しさん mailto:sage [03/07/22 07:57]
nsCOMPtr.hにあるdo_QueryInterface(nsI***)をしようとすると、
「Link2005 nsQueryInterface::nsQueryInterfaceは既に定義されています。」というエラーが出ます。
要するに、embed_base_s.libと、xpcom.lib(xpcom.dll)の両方にあるのが問題なんでしょうが、
なんかいい方法ないですかね。

481 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/22 10:29]
>>480
XPCOM_GLUEを定義していませんか?
gecko-sdkのバイナリを使う時はこれを定義してはいけないようです。

www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/init_term.html
のTipsにも一応書いてあります。

482 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/22 10:32]
すいません。訂正です。
www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/build.html
のTipsです。

483 名前:デフォルトの名無しさん mailto:sage [03/07/22 14:00]
>>481
素早いお返事ありがとうございます。
でも、きっかけが、geckoSDKだけでなんとかならないかな?
ってことだったので、XPCOM_GLUEを外してしまうと意味がないのです。

nsIBaseWindow.hとnsIWebNavigationはちょっと敷居が高いので諦めて拾ってきましたが、
nsComponentManagerUtils.hはなくても大丈夫なようですね。

If文の中身がこんな感じになりましたが、無事動いてます。

::ShowWindow(hWnd, SW_SHOW);
nsIWebBrowser* webBrowser;
nsCOMPtr<nsIComponentManager> compMgr;
nsresult status = NS_GetComponentManager(getter_AddRefs(compMgr));
if (compMgr){
status = compMgr->CreateInstanceByContractID("@mozilla.org/embedding/browser/nsWebBrowser;1",
nsnull,
NS_GET_IID(nsIWebBrowser),
(void**)&webBrowser);
}
else if (NS_SUCCEEDED(status))status = NS_ERROR_UNEXPECTED;

if ( NS_FAILED(status) )::MessageBox(hWnd,"error!","minibrowser", MB_OK);

nsIBaseWindow* baseWindow;
(nsISupports *)webBrowser -> QueryInterface(NS_GET_IID(nsIBaseWindow),(void**) &baseWindow);
RECT r; // ちょっと色気を出してGeckoをクライアント領域の大きさに合わせてみる
::GetClientRect(hWnd, &r);  ・・・・・・・・・・・

484 名前:デフォルトの名無しさん mailto:sage [03/07/22 14:09]
あ、スマートポインタで。

485 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/22 19:50]
>>483
なるほど。私もGeckoSDKだけでどこまでやれるかやってみますね。
とりあえず、>>480の重複シンボルはlink.exeに-forceを渡して解決しました。


486 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/22 19:53]
間違えました。>>485訂正です(訂正多いな・・俺)

>とりあえず、>>480の重複シンボルはlink.exeに-forceを渡して解決しました。
これは DEBUG を定義した場合です。
つまり、-D MOZILLA_STRICT_API -D XPCOM_GLUE -D DEBUGの場合は-forceで(一応)回避できます。

DEBUGを外せば-D MOZILLA_STRICT_API -D XPCOM_GLUEで普通にリンクできます。
(ただしnsDebugのメッセージが出なくなりますが)

487 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/22 20:55]
>>483
XPCOM_GLUEを使ってgecko-sdkのみでやってみました。↓のリンク先を参照。

gecko-sdkのみで最小のGecko
www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/MinimumGecko2.html


488 名前:デフォルトの名無しさん mailto:sage [03/07/22 21:21]
>>487
グッジョブです。
ところで、nsLiteralString.hは誰が使ってるんですか?
geckoSDKからは、#includeで参照されてないようですが…

489 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/22 22:05]
>>488
>ところで、nsLiteralString.hは誰が使ってるんですか?
さあ?EmbedApplicationじゃないかな。
mozilla/embedding/tests/winEmbed/

mozilla/embedding/tests/mfcembed/
で使ってるけど。
まあnsEmbedStringを使っておけばいいんじゃないのかな。多分。

ちょっとstring関連は分かりにくいですね。
真面目にstringのマニュアル読むべきかもしれないけど、少し古いっぽい気がする。



490 名前:デフォルトの名無しさん mailto:sage [03/07/22 23:51]
// From mozilla/string/public/nsLiteralString.h
#ifdef HAVE_CPP_2BYTE_WCHAR_T
  #define NS_LL(s) L##s
#else
  #define NS_LL(s) s
#endif
の部分ですけど、
win32のgeckoSDKではNS_LL(s)を検索してもヒットしないので、
なんで必要なのかな、と疑問に思っただけです。
なくてもビルドできますよね?

491 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/23 00:14]
>>490
え、ビルドできるんですか。
PRUnichar*をどうやって得ました?直にL""と?

492 名前:デフォルトの名無しさん mailto:sage [03/07/23 14:13]
コード゙を整理してたら、ビルドできなくなってました。
しかし、自分の不注意でビルドできてしまった経験は稀なので、
なんかトリックがありそうな気はしますが…

493 名前:デフォルトの名無しさん mailto:sage [03/07/24 07:10]
質問です。
www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/MinimumGecko.html
にある最小のgeckoでは問題なかったのですが
www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/WebBrowserSiteObject.html
をコピぺしてSetStatusを実装してみたところ、GetInterfaceの出力が出たあとで
「〜の命令が〜のメモリを参照しましたメモリがreadになることはできませんでした」
とエラーが出ておちてしまいます。
原因はなんでしょうか?

環境はwin2000, gecko-sdk-win32-1.4, mozilla-source-1.4, mozilla-win32-1.4-talkback,
platformSDK, NET Framework SDKのcl.exeとlink.exeです。

コンパイルを通すため、以下のようにしています。
MakefileのLDFLAGSに
-nodefaultlib:msvcprt.lib
を加えています。

また、コンパイル時にmain.cppの
nsCOMPtr<WebBrowserSiteObject> webBrowserSiteObject(new WebBrowserSiteObject());で
「../gecko-sdk\xpcom\include\nsCOMPtr.h(539) : error C2594: '引数' : 'WebBrowserSiteObject *' から
'nsISupports *' への変換はあいまいです。」
とエラーがでたため、nsIWebBrowserChrome.h、nsIInterfaceRequestor.hの
〜 : public nsISupports { 
を 
〜 : virtual public nsISupports { 
に変更しました。

コンパイルを通すために行った変更部分が原因なのでしょうか?



494 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/24 10:48]
>>493
「〜 : public nsISupports {  」のままでも
「../gecko-sdk\xpcom\include\nsCOMPtr.h(539) : error C2594: '引数' : 'WebBrowserSiteObject *' から
'nsISupports *' への変換はあいまいです。」
なんてエラーは出ませんね。.NET Framework SDKのcl.exeを使っています。

win2000, gecko-sdk-win32-1.4, VC++6のSDK、NET Framework SDKのcl.exeとlink.exe
という環境では以下のソースで正常にコンパイル・リンク・実行できます。確認してみてください。
www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/test/main.cpp
www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/test/WebBrowserSiteObject.h
www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/test/WebBrowserSiteObject.cpp
www004.upp.so-net.ne.jp/rcl/program/gecko/cpp/test/Makefile


495 名前:デフォルトの名無しさん mailto:sage [03/07/25 03:32]
virtualの実体を参照しようとするのは、絵に描いた餅で雑煮をつくるようなもんだぞ。

496 名前:デフォルトの名無しさん mailto:sage [03/07/25 03:37]
>>495


497 名前:デフォルトの名無しさん mailto:sage [03/07/30 17:48]
geckoで縦書きできないかなぁ

498 名前:デフォルトの名無しさん mailto:sage [03/07/30 17:53]
>>497
bugzilla.mozilla.org/show_bug.cgi?id=145503
是非

499 名前:デフォルトの名無しさん mailto:sage [03/07/30 20:27]
いくらvoteしても、パッチなんて出なさそうなんだけど。
lxr.mozilla.org/seamonkey/source/layout/html/forms/src/nsTextControlFrame.cpp

このへんかなぁ?



500 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/31 03:29]
>>493
遅レスですが。
「'引数' : 'WebBrowserSiteObject *' から'nsISupports *' への変換はあいまいです。」
ってのは多重継承の弊害なので、
WebBrowserSiteObject*→nsIWebBrowserSiteObject*と明示的にキャストすれば
nsISupports*まで辿り着けます。

で、自分で書いといて何ですが、
nsCOMPtr<WebBrowserSiteObject> webBrowserSiteObject(new WebBrowserSiteObject());で
と言うコードは書かない方がいいです。
WebBrowserSiteObject* temp = new WebBrowserSiteObject();
nsCOMPtr<nsIWebBrowserSiteObject> webBrowserSiteObject
CallQueryInterface(NS_STATIC_CAST(nsIWebBrowserChrome*, temp), webBrowserSiteObject);
とすべきです。(書き方は色々ですが)
jt.mozilla.gr.jp/projects/xpcom/nsCOMPtr.html

501 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/07/31 03:31]
CallQueryInterface(NS_STATIC_CAST(nsIWebBrowserChrome*, temp), webBrowserSiteObject);

CallQueryInterface(NS_STATIC_CAST(nsIWebBrowserChrome*, temp), getter_AddRefs(webBrowserSiteObject));
スマソ

502 名前:山崎 渉 mailto:(^^)sage [03/08/02 02:30]
(^^)

503 名前:デフォルトの名無しさん [03/08/06 00:58]
hosh

504 名前:はしのえみ好き〜&rlo;ッ゚ホ(`Д´*)&lro; mailto:sage [03/08/06 01:25]
丁度上がっているので質問です。

form要素が使えないのですが、どうすれば使えるようになるんでしょうか?
もちろん自分で調べますが、知ってる方がいらっしゃれば先に教えていただけると楽なんですが。

#未だにnsIWebBrowserChromeとnsIEmbeddingSiteWindowの役割が分からん・・・。

505 名前:デフォルトの名無しさん mailto:sage [03/08/06 20:25]
>>504
all.js に
pref("security.warn_submit_insecure", false);
つければいいんじゃないかな。
dialog(nsIPromptServece) が出せないんで止まるんだと思う
httpsとかで必要ならこのへんも
pref("security.warn_entering_secure", false);
pref("security.warn_entering_weak", false);
pref("security.warn_leaving_secure", false);
pref("security.warn_viewing_mixed", false);

506 名前:デフォルトの名無しさん mailto:sage [03/08/07 01:01]
>#未だにnsIWebBrowserChromeとnsIEmbeddingSiteWindowの役割が分からん・・・。
それは、nsIBaseWindowをつかってるからでは?

507 名前:はしのえみ好き〜@仕事が詰まってるぞ mailto:sage [03/08/07 03:00]
>>505,>>506
レスありがとうございます。

>>505
わー!すごーい!できました!
なるほど、本来なら送信セキュリティチェックのダイアログが出ているんですね。
そりゃ実装してなかったら先へ進めませんわな。
本当にありがとう!

>>506
んっと、「nsIBaseWindowをつか」うとはどういう意味でしょう?確かに
nsIWebBrowserChrome#SizeBrowserTo,DestroyBrowserWindow,
nsIEmbeddingSiteWindow#SetVisibility,GetTItle,GetSiteWindow
でnsIBaseWindowは使ってますが。。
nsIBaseWindowにタッチしない方が良いという意味でしょうか?

(Get|Set)Dimensions,(Get|Set)Visibilityとかで悩んでますね。
どこのやつを取ってこればええのー?って感じで。
ポップアップウィンドウを開く時に親ウィンドウのGetDimensionsが呼ばれるんですが
それ一体何に使うねん。みたいな状態で・・・(ソース調べてないだけなんですが

508 名前:デフォルトの名無しさん [03/08/08 16:41]
Geckoエンジンブラウザを、VisualC++のプロジェクト(ソリューション)で
ビルドできる段階になっているサンプルってないですか?
参考にしたいのです。
よろしくおねがいします


509 名前:デフォルトの名無しさん mailto:sage [03/08/08 19:04]
ありますよ。



510 名前:508 [03/08/09 00:22]
>>509
名前か参考URLを教えていただけませんか
よろしくおねがいします


511 名前:デフォルトの名無しさん mailto:sage [03/08/09 01:07]
このスレを はしのえみ で検索






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<225KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef