网页下载CAB文件总结
原来的程序是一个EXE,现在需要封装成COM,然后打包成CAB文件,让客户通过网页调用。耗费了两天时间终于完成了,总结一下。
1、最初我是用VC6.0的MFC ActiveX生成了OCX,OCX中有一个对话框,通过IE控件来显示一个生成的网页文件,写完之后发现通过外部IE调用OCX的时候对话框中的IE控件显示不出来需要加载的网页。
   没办法,只能让OCX返回网页文件的地址,再通过JS的window.open来显示网页。
2、实现了网页的显示,我以为已经完成了90%的工作,挺高兴,原来预计两天时间的任务不到一天就完成了,感觉挺爽,那就用一个小时的时间完成剩下的10%吧,用iexpress把OCX及相关的动态库打包成CAB文件,
   挠头的事情发生了,网页无法下载这个CAB文件!更别提注册了!反复研究INF文件,反复生成CAB,反复的失败...
   怀疑打包程序,用iexpress,用CABARC,甚至用VB自带的打包程序,结果都一样,失败,排除打包程序的问题,还是别冤枉微软了。
   怀疑INF文件有问题,重写了一个MFC ActiveX小程序,INF文件简单的不能再简单了,打包,失败,排除INF文件问题。
   ...
   一个同事问我,你的COM标准吗?靠,这个问题问的太好了!堪比“人为什么活着?”!赶紧用ATL COM生成一个小例子,打包成CAB,成功了!!!
   严重鄙视MFC ActiveX,不伦不类的东西。
3、主要技术点:
   INF文件的格式:

INF文件的格式;INF file for tkSoundExe.exe;DestDir can be 10 for Windows directory, 11 for Windows\System(32) directory, or left blank for the Occache directory.[version]signature="$CHICAGO$"AdvancedINF=2.0
[DefaultInstall]CopyFiles=install.filesRegisterOCXs=RegisterFiles[RInstallApplicationFiles]CopyFiles=install.filesRegisterOCXs=RegisterFiles[DestinationDirs]install.files=11[SourceDisksNames]1=%DiskName%,RptView.CAB,1
[Add.Code]RptView.dll=RptView.dllMSVCP60.DLL=MSVCP60.DLLMSVCP60D.DLL=MSVCP60D.DLLMSVCRT.DLL=MSVCRT.DLLMFC42.DLL=MFC42.DLLMSVCRTD.DLL=MSVCRTD.DLLcppbind.dll=cppbind.dllCacheODBC.dll=CacheODBC.dllRisDll.dll=RisDll.dllFTPClient.dll=FTPClient.dllris.ini=ris.ini[install.files]MSVCP60.DLL=MSVCP60.DLLMSVCP60D.DLL=MSVCP60D.DLLMSVCRT.DLL=MSVCRT.DLLMFC42.DLL=MFC42.DLLMSVCRTD.DLL=MSVCRTD.DLLcppbind.dll=cppbind.dllCacheODBC.dll=CacheODBC.dllRisDll.dll=RisDll.dllFTPClient.dll=FTPClient.dllris.ini=ris.iniRptView.dll=RptView.dll[SourceDisksFiles]MSVCP60.DLL=1MSVCP60D.DLL=1MSVCRT.DLL=1MFC42.DLL=1MSVCRTD.DLL=1cppbind.dll=1CacheODBC.dll=1RisDll.dll=1FTPClient.dll=1ris.ini=1RptView.dll=1
[RptView.dll]file-win32-x86=thiscabRegisterServer=yesclsid={279662D5-3EAE-4BD3-A8E0-8A503AA4F616}DestDir=11 FileVersion=1,0,0,1
[MSVCP60.DLL]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=6,0,8972,0
[MSVCP60D.DLL]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=6,0,8972,0
[MSVCRT.DLL]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=6,1,9844,0
[MFC42.DLL]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=6,0,9586,0
[MSVCRTD.DLL]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=6,0,9782,0
[cppbind.dll]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=5,0,5105,0
[CacheODBC.dll]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=5,0,5105,0
[RisDll.dll]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=1,0,0,1
[FTPClient.dll]file-win32-x86=thiscabRegisterServer=noDestDir=11 FileVersion=1,0,0,1
[ris.ini]file-win32-x86=thiscabRegisterServer=noDestDir=11 
[RegisterFiles]%11%\RptView.dll

在JS文件中,写下载CAB文件的代码:
     document.write("<OBJECT ID='RptView' WIDTH=0 HEIGHT=0 CLASSID='CLSID:279662D5-3EAE-4BD3-A8E0-8A503AA4F616' CODEBASE='../addins/client/RptView.CAB#version=1,0,0,1'>");
document.write("</object>");
    注意:CODEBASE最好为相对路径。
   
    在JS文件中,调用COM接口,并弹出网页文件。
    var objVar = RptView.GetRptURL("XXXXX");
    window.open(objVar,'newwindow','height=700,width=900,top=5,left=150,toolbar=no,menubar=no,scrollbars=yes,resizable=no,location=no, status=no')

转载于:https://www.cnblogs.com/FlyingRoc/archive/2008/12/03/1346479.html

网页下载CAB文件总结相关推荐

  1. python beautifulsoup下载_使用Python和BeautifulSoup从网页下载.xls文件

    你的剧本目前的问题是:url有一个尾随的/在请求时给出一个无效的页面,而不是列出要下载的文件. soup.select(...)中的CSS选择器正在选择具有属性webpartid的div,该属性在链接 ...

  2. cab文件打包的ActiveX控件

    程序环境:Windows Xp SP2, IE 6, Tomcat 6.0, VC++6.0javascript 利用MFC开发的ActiveX控件要正常运行必须依赖MFC库.可是你不能保证你用户的机 ...

  3. Web发布cab文件打包的ActiveX控件总结

    这两天做控件的web发布遇到了几个问题,现总结如下. 一.程序描述: 程序环境:windows Xp sp2, ie 6, tomcat 5.5, vc++6.0 程序过程:控件做成ocx文件,用于客 ...

  4. 【搜索引擎Jediael开发笔记2】使用HttpClient下载网页至本地文件

    本文使用HttpClient依据url进行网页下载.当中 (1)HttpClient的相关知识请參见 HttpClient基础教程 (2) package org.ljh.search.downloa ...

  5. python下载网页中的pdf文件_【Python】Python的urllib模块、urllib2模块批量进行网页下载文件...

    由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的url ...

  6. 自动从mysql下载文件到powerbi_关于在Power Query和Power BI中从网页下载文件的小提示...

    ​从网络下载数据时,通常最好是从专门为机器对机器通信而设计的API中获取数据,而不是从屏幕上实际可见的站点中获取数据.下载不仅通常更快,而且还常常获得更多非常有用的附加参数.在本文中,我将向您展示如何 ...

  7. python单击url下载网页文件_使用不带url的python脚本从网页下载文件,调用onClick函数 - javascript...

    有一个网页带有链接"单击下载",单击该链接可以下载文件. 我可以通过转到网页并单击此链接来手动下载此文件,但是我需要通过python脚本下载此文件. 如果我看到源代码,则可以看到锚 ...

  8. python批量下载网页文件夹_Python的urllib模块、urllib2模块批量进行网页下载文件...

    由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的url ...

  9. 如何极速下载网页上的文件? 怎么批量下载文献

    如何快速下载网页上的文件?当今许多文件会被传输至网盘等云空间中,但有些文件仍可以通过网页下载,使用IDM我们可以快速下载不同类型的网页文件.怎么批量下载文献?在写论文时,常需要引用某些文献来支持自己的 ...

  10. 微信公众号 - 实现 H5 网页在微信内置浏览器中下载文件,可预览和下载 office 文件(doc / xls / ppt / pdf 等)适用于任何前端技术栈网站,兼容安卓和苹果系统!

    前言 网上的教程都是让你写页面 "引导" 右上角三个点里,让用户自己去浏览器打开,其实这样用户体验并不好. 本文实现了 最新微信公众号 H5 网页(微信内置浏览器中),预览下载 o ...

最新文章

  1. fanuc机器人四边形编程_FANUC机器人示教编程:原始路径恢复功能介绍与使用方法...
  2. R语言ggplot2可视化:使用热力图可视化dataframe数据、自定义设置热力图的颜色、自定添加标题、轴标签、热力图线框等
  3. 五连阳回调买入法_短线高手总结的强势股回调买入法,散户需牢记
  4. 【剑指offer-Java版】29数组中出现次数超过一半的数字
  5. oracle中join另一个表后会查询不出一些数据_阿里规定超过3张表,禁止JOIN,为何?
  6. C语言学习及应用笔记之五:C语言typedef关键字及其使用
  7. 2003文件共享服务器搭建,用Windows Server 2003搭建安全文件服务器(2)
  8. python的优点有哪些-Python有哪些技术上的优点?比其他语言好在哪儿?
  9. 第一类边界条件,三角单元剖分,线性插值的位场延拓,LDLT高效求解
  10. 从零开始学WEB前端——HTML理论讲解
  11. tomcat运行超时问题解决
  12. Hive 连接 secured ES 踩坑日记
  13. android wear 微信支付,智能手表不是鸡肋 Pacewear能刷微信支付宝结账
  14. postgresql 计算时间差
  15. UOJ#311. 【UNR #2】积劳成疾
  16. 艾司博讯:拼多多新手如何正确使用多多进宝?
  17. Ubuntu: failed to fetch
  18. 如何评价蚂蚁的ant-design-vue UI框架
  19. 关于《报到证》的相关问答
  20. stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

热门文章

  1. 嵌入式Linux驱动笔记--转自风筝丶
  2. js获取浏览器和设备相关width(屏幕的宽度)
  3. (转载)python re模块详解 正则表达式
  4. P3371 单源最短路径【模板】 洛谷
  5. mysql 复制表结构和表数据
  6. Json格式类的转换相关代码--转载
  7. 使用SharePoint Designer,将左侧的导航修改为Treeview
  8. SQL 和T-SQL学习(一)
  9. slf4j 和 log4j2 架构设计
  10. 自定义微信小程序导航(兼容各种手机)