一点编写 BHO 的思路,求指点
大家好:
我写了一个BHO ,现在能做到的是 BHO 可以直接执行 IE 里面的 JS 方法。
同时我以如下方式 为 IE 的 IHTMLWindow 插入了一个我自己写的 IDispatch 对象
这样使得我可以在 IE 的 JS 中直接以如下方式调用
window.phonePlugInIE.xxxmethod() 的方式调用 BHO 的功能
更进一步的想法:
如果我插入的 phonePlugInIE 对象可以 有 COM 事件放出来,那么我如何使用 JS 方便的接收呢。
bho 直接调用JS 方法的实现就不用谈了,我已经实现了,但是感觉有点儿绕。 我想让JS 相应我的对象的事件 ,就像 相应一个button 的OnClick 那样简单。
求指点
我写了一个BHO ,现在能做到的是 BHO 可以直接执行 IE 里面的 JS 方法。
同时我以如下方式 为 IE 的 IHTMLWindow 插入了一个我自己写的 IDispatch 对象
CComQIPtr<IHTMLDocument2> spDocument2 = spDisp;
CComPtr<IHTMLWindow2> spWin;
hr = spDocument2->get_parentWindow(&spWin);
if(SUCCEEDED(hr))
{
hr = spWin->QueryInterface(IID_IDispatchEx, (void **)&spDispEx);
DISPID dispid;
hr = spDispEx->GetDispID(CComBSTR("phonePlugInIE"),fdexNameEnsure,&dispid);
DISPPARAMS dispparams;
dispparams.rgvarg = new VARIANT;
//dispparams.rgvarg= new CComVariant("HELLO WORLD OBJECT");
DISPID dispidPut=DISPID_PROPERTYPUT;
dispparams.rgdispidNamedArgs=&dispidPut;
dispparams.cArgs = 1;
dispparams.cNamedArgs = 1;
IDispatch* dispatchPtr( this );
//IDispatch* phoneActionDisp;
//hr=pphoneConnector->pphoneAction->QueryInterface(IID_IDispatch,(void**)&phoneActionDisp);
//IDispatch* dispatchPtr(phoneActionDisp);
// dispatchPtr->GetIDsOfNames()
dispparams.rgvarg->pdispVal = dispatchPtr;
dispparams.rgvarg->vt = VT_DISPATCH;
VARIANT temp;
HRESULT result = spDispEx->InvokeEx( dispid, LOCALE_USER_DEFAULT ,
DISPATCH_PROPERTYPUT,
&dispparams , &temp , NULL , NULL );这样使得我可以在 IE 的 JS 中直接以如下方式调用
window.phonePlugInIE.xxxmethod() 的方式调用 BHO 的功能
更进一步的想法:
如果我插入的 phonePlugInIE 对象可以 有 COM 事件放出来,那么我如何使用 JS 方便的接收呢。
bho 直接调用JS 方法的实现就不用谈了,我已经实现了,但是感觉有点儿绕。 我想让JS 相应我的对象的事件 ,就像 相应一个button 的OnClick 那样简单。
求指点
...全文
相关推荐
c++ BHO实例源码及开发教程
**C++ BHO实例源码及开发教程**BHO(Browser Helper Object)是Microsoft Internet Explorer浏览器的一种扩展机制,它允许开发者编写小型的COM组件来增强或定制浏览器功能
自己编写的BHO.zip
BHO允许开发者扩展浏览器的功能,添加自定义的工具栏、菜单项,或者监听并响应浏览器的各种事件。在本压缩包文件"自己编写的BHO.zip"中,包含了开发一个BHO所需的基本元素,让我们来详细了解一下。
bho.zip_BHO
**bho.cpp**:这是C++源代码文件,包含了BHO的主要实现。开发者在这里编写BHO的逻辑,包括如何响应浏览器事件、添加自定义功能等。
用Plain C ++编写BHO
"BHOinCPP_dll.zip":这个可能包含了编译后的DLL文件,即实际运行的BHO组件。在编写BHO时,你需要了解以下关键知识点:1.
Delphi BHO
**用Delphi编写BHO的步骤** - 创建一个新的Delphi项目,选择ActiveX库工程模板。


