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という名前のつくインターフェースなのに 実装するだけで使えるものもあれば登録しないと呼び出されないものもある。 実に理不尽だ。
コメントする