Geckoブラウザ組込み超入門

| コメント(0) | トラックバック(1)

6年位前に通過したことをいまさら記録として残してみるテスト。

begin
  { 初期化 }
  XPCOMGlueStartup(xpcomPath);
  XPCOMGlueLoadXULFunctions(@xulFunctions);
  XRE_InitEmbedding(xpcomDir, nil, nil, nil, 0);

  { WebBrowserオブジェクトの作成 }
  NS_CreateInstance(NS_WEBBROWSER_CONTRACTID, nsIWebBrowser, browser);
  baseWin := browser as nsIBaseWindow;
  baseWin.InitWindow(Pointer(hWnd), nil, 0, 0, rcClient.Right, rcClient.Bottom);
  baseWin.Create();
  baseWin.SetVisibility(PR_True);

  { ページ読み込み }
  navigation := browser as nsINavigation;
  navigation.LoadURI('http://nesitive.net/nesitive/', 0, nil, nil, nil);

  { 気が済んだら終了 }
  XRE_TermEmbedding();
  // XPCOMGlueShutdown(); // なぜかエラーになる
end.

細部は省略したけど大体あってる。 XPCOMGlueShutdownはアクセス違反が出るので実行しない。 いまはXULrunnerがあるからこれだけのコードでもスクロールバーつきでブラウザが表示できるんだな。 便利になったものだ。

しかしこのままではステータスバーの表示もメニューの表示もできない。 nsIWebBrowserChromeインターフェースの実装やら nsIWebProgressListenerの登録やらやらなきゃならないことはまだ多い。

以下覚書

  • nsIWebBrowserChrome
  • nsIWebBrowserChromeFocus
  • nsIEmbeddingSiteWindow
  • nsIInterfaceRequestor
  • nsIContextMenuListener2
  • nsIWebProgressListener
  • nsISHistoryListener

同じListenerという名前のつくインターフェースなのに 実装するだけで使えるものもあれば登録しないと呼び出されないものもある。 実に理不尽だ。

トラックバック(1)

トラックバックURL: http://nesitive.net/mt/tbping/177

おひさしぶりです。 私も2年ぶりに動かしているところなのですが、こちらではXPCOMGlueShutdownでのアクセス違反は出ないですね。 ttp:/... 続きを読む

コメントする

アーカイブ

ウェブページ

Powered by Movable Type 4.21-ja

このブログ記事について

このページは、が2008年9月 4日 23:19に書いたブログ記事です。

ひとつ前のブログ記事は「XPCOMGlueShutdownの罠」です。

次のブログ記事は「nsIHttpChannel.asyncOpenが動かない」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。