网页加载ActiveX控件时,ocx未拷贝到指定的system32下

NXGG 2014-08-06 03:56:33
用MFC做了一个ActiveX控件,用IExpress将ocx文件和相关的几个dll文件打包成CAB文件,然后在web中加载和调用

发现ocx文件并未拷贝到指定的system32路径下,而其他几个dll文件却被正确地拷贝到system32下了

当然了,这样一来控件加载失败也就不能正常调用了

请问各位是什么原因,实在是困扰很久了……

setup.inf如下:

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Add.Code]
VMPCControl.ocx=VMPCControl.ocx
tmConfigDlg.dll=tmConfigDlg.dll
tmControlClient.dll=tmControlClient.dll
bkpostproc.dll=bkpostproc.dll
libavcodec.dll=libavcodec.dll

[install.files]
VMPCControl.ocx=VMPCControl.ocx
tmConfigDlg.dll=tmConfigDlg.dll
tmControlClient.dll=tmControlClient.dll
bkpostproc.dll=bkpostproc.dll
libavcodec.dll=libavcodec.dll

[VMPCControl.ocx]
file-win32-x86=thiscab
RegisterServer=yes
clsid={EA9D342C-FF4E-41EC-92E1-C3851F652ACC}
DestDir=11
FileVersion=1,0,0,1

[VMPCControl.ocx]
file-win32-x86=thiscab
DestDir=11
FileVersion=1,0,0,1

[tmConfigDlg.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=1,0,0,1

[tmControlClient.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=1,0,0,1

[bkpostproc.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=1,0,0,1

[libavcodec.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=1,0,0,1

[RegisterFiles]
%11%/VMPCControl.ocx

...全文
341 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
NXGG 2014-08-06
  • 打赏
  • 举报
回复
首先感谢您的回复! 我使用的是32位的WinXP SP3系统 因此正常情况下,ocx文件应当被拷贝到c:\windows\system32路径下 但实际上没有,不知道是什么原因,很是费解 setup.inf文件我已经给出了,不知道是不是写得有问题……
赵4老师 2014-08-06
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
解决提示audiosrv.dll找不到或缺少的问题 下拷贝到windows/system32下即可 什么是.DLL文件? DLL 是一个包含可由多个程序同使用的代码和数据的库。例如,在 Windows 操作系统中,Comdlg32 DLL 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。 通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售。可以在运行将各个模块到主程序中(如果安装了相应模块)。因为模块是彼此独立的,所以程序的速度更快,而且模块只在相应的功能被请求。 此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,您可能具有一个工资计算程序,而税率每年都会更改。当这些更改被隔离到 DLL 中以后,您无需重新生成或安装整个程序就可以应用更新。 下表说明了 Windows 操作系统中的一些作为 DLL 实现的文件: * ActiveX 件 (.ocx) 文件 ActiveX 件的一个示例是日历件,它使您可以从日历中选择日期。 * 制面板 (.cpl) 文件 .cpl 文件的一个示例是位于制面板中的项。每个项都是一个专用 DLL。 * 设备驱动程序 (.drv) 文件 设备驱动程序的一个示例是制打印到打印机的打印机驱动程序。
packetvb,vb类,封装了 winpcapa, vbpcap又称为PacketVB,是一种能够被VB调用的数据包捕获开发库,vbpcap封装了WinPcap的API函数的ActiveX库,由Politecnico di Torino开发,使用方法与WinPcap下的Packet.dll关系密切。因此在使用vbpcap编程的候,应该首先安装WinPcap vbpcap把捕获到的网络数据包存放在内部的一个缓冲器中,解析每个数据包。当每捕获一个数据包,会触发一个事件,通过该事件,传递被捕获数据包的字节数。然后可以调用vbpcap提供的方法,把捕获到的数据包从内部缓冲器中copy到一个2进制数组中。 目前的vbpcap只能做到捕获数据包,没有对捕获到的数据包进行协议分析,协议分析的工作可以由程序设计者来完成。另外,由于vbpcap是封装的WinPcap的API函数,因此和WinPcap一样,只能捕获数据包,并不能阻止数据包在网络上的传递,因此不能用来开发防火墙一类的程序。 在使用vbpcap编写捕获数据包程序之前,应先最好准备工作,可以参考如下步骤来进行: 1.首先安装2.3-WinPcap版本(废话~~~),注意,一定要安装该版本的winpcap,否则注册vbpcap.dll会出错(还不知道原因)。 2.解压缩packetvb-1.0.0.3.bin.zip,把其中的vbpcap.dll拷贝到c:\windows\system32目录下 3.“开始”-->“运行”,输入“regsvr32 c:\windows\system32\vbpcap.dll”,注册vbpcap.dll 4.打开VB,“工程”-->“引用”-->“浏览”,在c:\windows\system32中选中vbpcap.dll,确定 5.下面就可以使用vbpcap.dll来编写网络抓包程序了

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧