最近公司的产品需要使用ActiveX文件上传。讨论了基本所有的技术,最后还是决定C++搞个ActiveX。。。但上传的回调费了半天劲,才搞定。代码如下
STDMETHODIMP CFileSelector::TestJSInvoke(VARIANT scriptCallback)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CComPtr<IDispatch> spCallback;
if(scriptCallback.vt == VT\_DISPATCH)
spCallback = scriptCallback.pdispVal;
CComVariant avarParams\[1\];
CFileDialog dlgFile(TRUE,NULL,NULL,OFN\_ALLOWMULTISELECT | OFN\_FILEMUSTEXIST,L"所有文件(\*.\*)|\*.\*||",NULL,NULL,FALSE);
if(dlgFile.DoModal() == IDOK)
{
avarParams\[0\] = dlgFile.GetPathName();
}
DISPPARAMS params = { avarParams, NULL,1,0 };
if(spCallback)
spCallback->Invoke(0,
IID\_NULL,
LOCALE\_USER\_DEFAULT,
DISPATCH\_METHOD,
¶ms,NULL,NULL,NULL);
return S\_OK;
}
JS调用方法:
手机扫一扫
移动阅读更方便
你可能感兴趣的文章