zoukankan      html  css  js  c++  java
  • ATL创建的ActiveX实现JS回调

    最近公司的产品需要使用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,
    			&params,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>
    
  • 相关阅读:
    SEUOJ上几道水题
    项目计划
    软件工程03
    件工程个人作业02
    软件工程个人作业01
    学习进度条
    软件工程第一次博客
    异常分析
    多态
    Java覆盖
  • 原文地址:https://www.cnblogs.com/briny/p/3512877.html
Copyright © 2011-2022 走看看