当前位置:编程学习 > VB >>

关于activex控件的问题,请教大家(部件'imgscan.ocx'或其附件之一不能正确注册:一个文件丢失或无效)

我用vb6编写了一个activex控件,步骤是这样的
1)注册柯达的扫描控件imgscan.ocx,注册成功(我用的是kodak_ocx_for_xp的)
2)创建activex控件,通过“部件”加入柯达的imgscan控件,并写代码如下
Private Sub Command1_Click()
    ScanImage ("c:\a1.JPEG")
End Sub

Public Sub ScanImage(ByVal filePath As String)
  If ImgScan1.ScannerAvailable Then
    ImgScan1.Image = filePath
    ImgScan1.PageOption = 6
    ImgScan1.MultiPage = True
    ImgScan1.FileType = 6
    ImgScan1.ScanTo = FileOnly
    ImgScan1.ShowSetupBeforeScan = True
    ImgScan1.StartScan
  Else
    MsgBox ("扫描设备尚不可用")
  End If
End Sub


3)将此工程生成ocx,然后使用vb6自带的打包工具“package & development向导”打包成cab文件,打开打包时生成的网页文件可以通过activex控件扫描,但是我反注册imgscan.ocx后却报错“部件'imgscan.ocx'或其附件之一不能正确注册:一个文件丢失或无效”


我一直在线,请各位兄弟看看



--------------------编程问答-------------------- 你装了一个浴缸,却把自来水的总开关关闭了,还能洗澡吗? --------------------编程问答-------------------- 就是说不能反注册imgscan.ocx吗?但是cab不是自安装自动注册的吗?我是想试验在从未注册过imgscan.ocx的客户端使用的情况下是否能正常自动注册并使用。难道打包成cab了以后每个客户端都要RegSvr32这个imgscan.ocx吗?

我是vb新手,都是用java的,现在要用到activex所以也是现学的,请多多指教啊:) --------------------编程问答-------------------- 没人知道吗? --------------------编程问答-------------------- ??? --------------------编程问答-------------------- 通过 setup.exe 安装和通过网页安装的配置是不一样的。
后者需要在 .inf 中逐个指定。 --------------------编程问答-------------------- ?
--------------------编程问答-------------------- 但是打包成cab文件的时候,已经生成了.inf文件,如下
;kScan.ocx 的 INF 文件
;DestDir 可以为 10 则在 Windows 目录,为 11 则在 Windows\System(32) 目录,或为空则在 Occache 目录。

[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%,kScan.CAB,1

[Add.Code]
kScan.ocx=kScan.ocx
MSDERUN.DLL=MSDERUN.DLL
msado15.dll=msado15.dll
msado20.tlb=msado20.tlb
imgscan.ocx=imgscan.ocx
msstkprp.dll=msstkprp.dll
MSPRPCHS.DLL=MSPRPCHS.DLL
msvbvm60.dll=msvbvm60.dll
oleaut32.dll=oleaut32.dll
olepro32.dll=olepro32.dll
asycfilt.dll=asycfilt.dll
stdole2.tlb=stdole2.tlb
COMCAT.DLL=COMCAT.DLL
VB6CHS.DLL=VB6CHS.DLL
[install.files]
kScan.ocx=kScan.ocx
MSDERUN.DLL=MSDERUN.DLL
msado15.dll=msado15.dll
msado20.tlb=msado20.tlb
imgscan.ocx=imgscan.ocx
msstkprp.dll=msstkprp.dll
MSPRPCHS.DLL=MSPRPCHS.DLL
msvbvm60.dll=msvbvm60.dll
oleaut32.dll=oleaut32.dll
olepro32.dll=olepro32.dll
asycfilt.dll=asycfilt.dll
stdole2.tlb=stdole2.tlb
COMCAT.DLL=COMCAT.DLL
VB6CHS.DLL=VB6CHS.DLL
[SourceDisksFiles]
kScan.ocx=1
MSDERUN.DLL=1
msado15.dll=1
msado20.tlb=1
imgscan.ocx=1
msstkprp.dll=1
MSPRPCHS.DLL=1
msvbvm60.dll=1
oleaut32.dll=1
olepro32.dll=1
asycfilt.dll=1
stdole2.tlb=1
COMCAT.DLL=1
VB6CHS.DLL=1

[kScan.ocx]
file-win32-x86=thiscab
RegisterServer=yes
clsid={16389069-95E9-4649-82CA-842F6C7E8D1D}
DestDir= 
FileVersion=1,0,0,0

[MSDERUN.DLL]
file-win32-x86=thiscab
RegisterServer=yes
clsid={3D5C6BF2-69A3-11D0-B393-00A0C9055D8E}
DestDir= 
FileVersion=6,0,0,3005

[msado15.dll]
file-win32-x86=thiscab
RegisterServer=yes
clsid={00000514-0000-0010-8000-00AA006D2EA4}
DestDir= 
FileVersion=2,81,1128,0

[msado20.tlb]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
FileVersion=2,81,1117,0

[imgscan.ocx]
file-win32-x86=thiscab
RegisterServer=yes
clsid={84926CA0-2941-101C-816F-0E6013114B7F}
DestDir=11
FileVersion=5,0,2134,1

[msstkprp.dll]
file-win32-x86=thiscab
RegisterServer=yes
DestDir=11
FileVersion=6,0,88,77

[MSPRPCHS.DLL]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
FileVersion=6,0,81,63

[msvbvm60.dll]
file-win32-x86=thiscab
RegisterServer=yes
DestDir=11
FileVersion=6,0,96,90

[oleaut32.dll]
file-win32-x86=thiscab
RegisterServer=yes
DestDir=11
FileVersion=5,1,2600,3266

[olepro32.dll]
file-win32-x86=thiscab
RegisterServer=yes
DestDir=11
FileVersion=5,1,2600,2180

[asycfilt.dll]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
FileVersion=5,1,2600,2180

[stdole2.tlb]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
FileVersion=3,50,5014,0

[COMCAT.DLL]
file-win32-x86=thiscab
RegisterServer=yes
DestDir=11
FileVersion=4,71,1460,1

[VB6CHS.DLL]
file-win32-x86=thiscab
RegisterServer=no
DestDir=11
FileVersion=6,0,89,88
[RegisterFiles]
%11%\COMCAT.DLL
%11%\olepro32.dll
%11%\oleaut32.dll
%11%\msvbvm60.dll
%11%\msstkprp.dll
%11%\imgscan.ocx
%11%\msado15.dll
%11%\MSDERUN.DLL
%11%\kScan.ocx

--------------------编程问答-------------------- 还有谁给点建议吗?? --------------------编程问答-------------------- 你为何要反注册imgscan.ocx?是想验证一下imgscan.ocx是否注册成功么? --------------------编程问答-------------------- 因为在给客户使用时,不可能是RegSvr32过imgscan.ocx的,所以我要反注册掉 --------------------编程问答-------------------- 过了双修还是没有解决方法,有谁帮忙吗? --------------------编程问答--------------------
引用 10 楼 ministor 的回复:
因为在给客户使用时,不可能是RegSvr32过imgscan.ocx的,所以我要反注册掉


没看懂。既然“不可能是RegSvr32过imgscan.ocx的”,你干嘛还要多此一举“反注册”啊? --------------------编程问答-------------------- 客户使用时不是开发环境,我们不可能去让客户注册ocx(regsvr32 imgscan.ocx),而应该是通过打包成cab包让浏览器自动安装 --------------------编程问答-------------------- 网页中需要添加如下引用

<head>
<OBJECT id="MyAuthLib" codeBase="WkAuthLib.cab#version=1,0,0,302" classid="clsid:e39f4004-329d-4e8b-82bc-0000c06b5161"
viewastext>
</OBJECT>
</head>
--------------------编程问答-------------------- 感谢这位老兄,但是我就是这样写的,现在发现是数字签名的原因 --------------------编程问答-------------------- 路过
补充:VB ,  控件
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,