ActiveX控件开发中需注意的问题

在ActiveX的开发中,发现一些问题,虽然问题不大,但要不知道的话,会浪费你很多的时间,整理一下,希望对朋友们有点帮助

 

1.ActiveX控件接口函数的参数:如果只传递字符串,最好用LPCTSTR类型,可兼容VBScript和JAVAScript。不要用VARIANT * 类型,此类型在VBScript下可以成功,但在JAVAScript下不行,也不要用VARIANT类型,此类型在JAVAScript下通过,却在VBScript下会出现问题。

2.要想控件通过访问网页是自动下载更新,必须在调用中加上版本号,且版本号要与你的控件版本一致,否则只在CAB包的INF文件中改变版本号是不能自动更新的,如下例:

  网页中的调用:

#version=2,0,0,0" height="0" width="0" classid="clsid:B0505A81-A489-4876-99E7-xxxxxxxxxxxx">
   
   
   
   
  

 

 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

你可能感兴趣的:(VC编程)