读书人

VC中调用内置浏览器中javascript函数,

发布时间: 2012-12-27 10:17:10 作者: rapoo

VC中调用内置浏览器中javascript函数
使用IE内核做的浏览器怎么来支持javacript啊!

高手指点。
[最优解释]
获取JS接口,然后Invoke
http://t.0728.org/News/152538.html
[其他解释]
CComPtr<IDispatch> spScrip;
HRESULT hr = S_OK;
CString szFunc = L"send_msg";
CComBSTR bstrSFunc(szFunc);
CComPtr<IDispatch> spDispDoc;
this->m_pBrowserApp->get_Document(&spDispDoc);
CComPtr<IHTMLDocument2> spHtmlDoc = NULL;
hr = spDispDoc->QueryInterface(IID_IHTMLDocument2, (void**)&spHtmlDoc);


DISPID pDispID = NULL;
if(spHtmlDoc != NULL)
{
hr = spHtmlDoc->get_Script(&spScrip);
if(SUCCEEDED(hr))
{
hr = spScrip->GetIDsOfNames(IID_NULL,&bstrSFunc,1,LOCALE_SYSTEM_DEFAULT,&pDispID);
if(S_OK == hr)
{
DISPPARAMS pParam;
memset(&pParam,0,sizeof(DISPPARAMS));
pParam.cArgs = 1;
pParam.rgvarg = new VARIANT[1];
CComBSTR bstrCommand = L" 100";
bstrCommand.CopyTo(&pParam.rgvarg[0].bstrVal);
pParam.rgvarg[0].vt = VT_BSTR;
pParam.cNamedArgs = 0;

EXCEPINFO exInfo;
memset(&exInfo,0x0,sizeof(EXCEPINFO));
VARIANT vaResult;
UINT nArgErr = (UINT)-1;
hr = spScrip->Invoke(pDispID,IID_NULL,0,DISPATCH_METHOD,&pParam,&vaResult,&exInfo,&nArgErr);
delete [] pParam.rgvarg;
if(S_OK == hr)
{

}


}

}
}
[其他解释]
怎么没人理我啊~!
[其他解释]

引用:
获取JS接口,然后Invoke
http://t.0728.org/News/152538.html


好像没有说怎么掉啊。

我从网上拷贝了以下这些函数,但是怎么来调用呢?
bool GetJScript(CComPtr<IDispatch>& spDisp);
bool CallJScript(const CString strFunc,CComVariant* pVarResult);
bool CallJScript(const CString strFunc,const CString strArg1,CComVariant* pVarResult);
const CString GetSystemErrorMessage(DWORD dwError);
bool CallJScript(const CString strFunc, const CStringArray& paramArray,CComVariant* pVarResult);

[其他解释]
这个是基于CDHtmlDialog 的

读书人网 >VC/MFC

热点推荐