原文地址:http://hi.baidu.com/rarnu/blog/item/4ec80608022766d663d986ea.html
在JS中,有一個比較特殊的對象,即window.external,用它可以調用瀏覽器提供的外部方法
一個很簡單的例子就是將當前頁添加到收藏夾
window.external.addFavorite("http://blog.csdn.net/youthon","弘石的博客');
這樣寫腳本就可以了。
那麼如果我想自己定義external,以便在自己的軟件內使用IE核心的瀏覽器作爲UI容器,該如何做呢?
本文即是解決此問題。
一、製作TLB
在File | New | Other 菜單下,選擇新建一個Type Library,這個嚮導在ActiveX頁內。
然後按下圖所示,新建一個接口,在接口下新建一個DoSearchData方法,這個方法即是將來需要添加到external中的。
完成添加後,點擊保存爲TLB按鈕,將生成一個TLB文件,此處我將它命名爲GetData.tlb
二、實現IDocHostUIHandler接口
這部分相對比較簡單,從MSDN上找到相關的C++代碼,把它轉換成Delphi的即可。代碼如下:
unitDocHostUIHandler;
interface
uses
Windows, ActiveX;
const
DOCHOSTUIFLAG_DIALOG =$00000001;
DOCHOSTUIFLAG_DISABLE_HELP_MENU =$00000002;
DOCHOSTUIFLAG_NO3DBORDER =$00000004;
DOCHOSTUIFLAG_SCROLL_NO =$00000008;
DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE =
$00000010;
DOCHOSTUIFLAG_OPENNEWWIN =$00000020;
DOCHOSTUIFLAG_DISABLE_OFFSCREEN =$00000040;
DOCHOSTUIFLAG_FLAT_SCROLLBAR =$00000080;
DOCHOSTUIFLAG_DIV_BLOCKDEFAULT =$00000100;
DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY =
$00000200;
DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY =
$00000400;
DOCHOSTUIFLAG_CODEPAGELINKEDFONTS =$00000800;
DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8 =
$00001000;
DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8 =
$00002000;
DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE =
$00004000;
DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION =
$00010000;
DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION =
$00020000;
DOCHOSTUIFLAG_THEME =$00040000;
DOCHOSTUIFLAG_NOTHEME =$00080000;
DOCHOSTUIFLAG_NOPICS =$00100000;
DOCHOSTUIFLAG_NO3DOUTERBORDER =$00200000;
DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP