在ActiveX的开发中,发现一些问题,虽然问题不大,但要不知道的话,会浪费你很多的时间,整理一下,希望对朋友们有点帮助
1.ActiveX控件接口函数的参数:如果只传递字符串,最好用LPCTSTR类型,可兼容VBScript和JAVAScript。不要用VARIANT * 类型,此类型在VBScript下可以成功,但在JAVAScript下不行,也不要用VARIANT类型,此类型在JAVAScript下通过,却在VBScript下会出现问题。
2.要想控件通过访问网页是自动下载更新,必须在调用中加上版本号,且版本号要与你的控件版本一致,否则只在CAB包的INF文件中改变版本号是不能自动更新的,如下例:
网页中的调用:
<OBJECT id="TestOcx" codeBase="TestOcx.CAB#version=2,0,0,0" height="0" width="0" classid="clsid:B0505A81-A489-4876-99E7-xxxxxxxxxxxx">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="26">
<PARAM NAME="_ExtentY" VALUE="26">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
TestOcx.INF文件:
;INF file for TestOcx.ocx
;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.files
RegisterOCXs=RegisterFiles
[RInstallApplicationFiles]
CopyFiles=install.files
RegisterOCXs=RegisterFiles
[DestinationDirs]
install.files=11
[SourceDisksNames]
1=%DiskName%,TestOcx.CAB,1
[Add.Code]
TestOcx.ocx=TestOcx.ocx
MFC42xx.DLL=MFC42xx.DLL
[install.files]
TestOcx.ocx=TestOcx.ocx
MFC42xx.DLL=MFC42xx.DLL
[SourceDisksFiles]
TestOcx.ocx=1
MFC42xx.DLL=1
[TestOcx.ocx]
file-win32-x86=thiscab
clsid={B0505A81-A489-4876-99E7-xxxxxxxxxxxx}
RegisterServer=yes
FileVersion=2,0,0,0
[MFC42xx.DLL]
file-win32-x86=thiscab
RegisterServer=yes
DestDir=11
FileVersion=6,0,8665,0
[RegisterFiles]
%11%/MFC42xx.DLL
%11%/TestOcx.ocx
3.制作数字证书与签名:
没有签名,IE会将其截,无法下载更新,可制作一个测试数字证书进行签名,当然也要将IE的安全级别设低才行,毕竟是测试用的,要是有购买的正规的证书签名那最好。测试数字证书制作及签名方法如下:
可用微软的证书制作工具,但是比较麻烦,这儿可以下载:http://download.csdn.net/source/1665918
建议用自信数字证书工具,还比较方便,里面有说明书,这儿下载:http://download.csdn.net/source/1665909
证书制作好后将控件及INF文件制作成CAB包并签名,可用AuthentiCode,它取代微软的SignCode.exe和SignTool.exe,并可直接打包后签名,不再需要CAB包的制作工具,这儿下载:http://download.csdn.net/source/1665869