如何使用vb6.0來實現中文實名搜索
2024-07-21 02:20:43
供稿:網友
說白了就是找個中間層,,讓他翻譯成vb能夠認識的玩藝,,不說廢話,,開始咯
中文實名無非是用ie 的iurlsearchhook,但是3721可不是這么玩得,,他是使用api hook攔截 ie commbox的消息,,,你根本就快不過他,,嘿嘿,,3721陰險把,,雖然我們不能實現全局鉤子,,在vb中也只能使用sub class 子類技術咯,,這個東西我們不完,,我們玩另外一種
我們首先要實現iobjectwithsite ,iunknown這兩個接口,,
我們需要創建一個odl文件,,通過它來創建一個tlb
[
uuid(cf9d9b76-ec4b-470d-99dc-aec6f36a9261),
helpstring("vb iobjectwithsite interface"),
version(1.0)
]
library iobjectwithsitetlb
{
importlib("stdole2.tlb");
typedef [public] long guidptr;
typedef [public] long voidptr;
[
uuid(00000000-0000-0000-c000-000000000046),
odl
]
interface iunknownvb
{
hresult queryinterface(
[in] guidptr priid,
[out] voidptr *pvobj
);
long addref();
long release();
}
[
uuid(fc4801a3-2ba9-11cf-a229-00aa003d7352),
odl
]
interface iobjectwithsite:iunknown
{
typedef iobjectwithsite *lpobjectwithsite;
hresult setsite([in] iunknownvb* psite);
hresult getsite([in] guidptr priid, [in, out] voidptr* ppvobj);
}
};
把它保存為odl然后,用typelib創建一個tlb文件,創建后我們引用這個文件
添加如下代碼
implements iobjectwithsitetlb.iobjectwithsite
dim withevents ie as internetexplorer
dim m_site as iunknownvb
private sub iobjectwithsite_getsite(byval priid as iobjectwithsitetlb.guidptr, ppvobj as iobjectwithsitetlb.voidptr)
m_site.queryinterface priid, ppvobj
end sub
private sub iobjectwithsite_setsite(byval psite as iobjectwithsitetlb.iunknownvb)
set m_site = psite
set ie = psite
end sub
我們現在已經實現了這兩個接口,為了實現我們的中文搜索,,我們不能使用urlsearchhook
所以我們通過接口 internetexplorer來實現我們的功能
private sub ie_beforenavigate2(byval pdisp as object, url as variant, flags as variant, targetframename as variant, postdata as variant, headers as variant, cancel as boolean)
這里填寫你需要的代碼,,。
end sub
具體就不多說了,,。。大伙們自己看咯
你需要添加到注冊表的brow help object的里面,,名字為這個com的classid