ATL创建的ActiveX实现JS回调
2014-01-09 22:23
225 查看
最近公司的产品需要使用ActiveX文件上传。讨论了基本所有的技术,最后还是决定C++搞个ActiveX。。。但上传的回调费了半天劲,才搞定。代码如下
JS调用方法:
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调用方法:
<script type="text/javascript"> function OnClick() { var activeX = document.getElementById("ActiveX"); activeX.FileExtFilter = "所有文件(*.*)|*.*||"; activeX.TestJSInvoke(function (e) { alert(e); }); return false; } </script>
相关文章推荐
- js实现链式调用及回调
- js实现创建文件
- 如何创建一个客户端回调:js获得服务端的内容?
- js动态创建上传表单通过iframe模拟Ajax实现无刷新
- js实现的ajax对象创建&与服务器交互
- THREE.JS入门教程(6)创建自己的全景图实现步骤
- js实现动态创建的元素绑定事件
- 在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
- 利用JS动态创建html控件并在后台实现取值
- js借助ActiveXObject实现创建文件
- 利用ActiveX实现本地文件夹选择功能(JS,HTML)
- cocos2d JS 创建实现换行功能的聊天文本 testLable
- MFC使用CEF并实现js与C++交互功能,解决Render进程中OnContextCreated绑定与OnWebKitInitialized的js扩展无法回调问题
- jdk、oracle、js、activeX的base64实现
- THREE.JS入门教程(6)创建自己的全景图实现步骤
- 用ATL 创建(Activex) 窗口
- arcgis for js实现GP服务创建、发布、调用(调用GP发布服务)
- JS创建自定义表格具体实现
- Js之使用dom实现创建节点和删除节点的方法
- [前端] js实现动态元素创建