如何使用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