独自のアプリケーションに組み込んだWebBrowserコントロールでTrixieを使いたい
IETabでTrixieが使いたい
Firefoxのタブ内にIE(実態はWebBrowserコントロール)を組み込むことができるアドオンIETabでTrixieが使いたくて、いろいろ調べている。
BHOはIObjectWithSiteをインプリメントしたCOMオブジェクトであることから、自前でTrixie.BhoをCreateObjec()して、SetSite()でWebBrowserオブジェクトのインスタンスの参照を渡してあげればなんとかなるんじゃないかと思い試してみた。
で、書いてみたのが以下のVB6のコード
Private Sub Form_Load() Set m_bho = CreateObject("Trixie.Bho") Call m_bho.SetSite(WebBrowser1) WebBrowser1.Navigate2 "http://www.google.com/" End S
FormにはWebBrowserコントロールを1個配置してて、Form読み込みと同時にGoogleのページを開くようにしている
Googleページにアクセスしたときに実行される(予定の)UserScriptは以下のとおり
(function(){ alert("Hello,Trixie!"); })();
単純に"Hello,Trixie!"のアラートを表示するだけの単純なスクリプト。
上記VB6プロジェクトを適当な名前で保存して実行してみたが、、、ダメ、スクリプトは実行されなかった。
Trixieのソースが手元に無いので、もうあきらめ気味だったが...
Trixieのソースを解析してみた
Trixieのソースは公には公開されてないが、Reflector for .NET というツールを使うとアセンブリからソースを逆コンパイルできることを知り、ソースを解析してみた。
Trixie.BhoのSetSite()の実装を読んでみたところ、どうやらアプリケーションの実行ファイルの名前が"IEXPLORE.EXE"で終わる名前でなければ処理を行わないようになっている。
逆に言うと、実行ファイルの名前が、IEXPLORE.EXE"で終わる名前であればTrixieが使えるっぽい。