我一直在使用Shell解压缩文件。突然,它停止处理错误:
“类不支持自动化或不支持预期的接口”
如果我在Win7机器上构建它,它就在Win7机器上运行,而不是在Win10上运行。如果我在Win10机器上构建它,它就在Win10机器上运行,而不是在Win7机器上运行。当在Win7机器上构建时,早期版本在这两台机器上运行良好。
我仔细地比较了.aip构建文件(高级安装程序),它们是相同的。我已经有3到4个月没碰过相关代码了。
下面是我正在使用的代码(您可能认得出来):
{ Dim ShellClass为外壳32.ShellClass FileSource为ShellClass 32. Filedest Filedest为ShellClass 32.Filedest Folderitems为ShellClass 32 Folderitems
If sFileSource = "" Or sFileDest = "" Then
GoTo Zip_Activity_Err
End If
Select Case UCase$(Action)
Case "ZIPFILE"
If Right$(UCase$(sFileDest), 4) <> ".ZIP" Then
sFileDest = sFileDest & ".ZIP"
End If
If Not Create_Empty_Zip(sFileDest) Then
GoTo Zip_Activity_Err
End If
Set ShellClass = New shell32.Shell
Set Filedest = ShellClass.NameSpace(sFileDest)
Call Filedest.CopyHere(sFileSource, 20)
Case "ZIPFOLDER"
If Right$(UCase$(sFileDest), 4) <> ".ZIP" Then
sFileDest = sFileDest & ".ZIP"
End If
If Not Create_Empty_Zip(sFileDest) Then
GoTo Zip_Activity_Err
End If
Set ShellClass = New shell32.Shell
Set FileSource = ShellClass.NameSpace(sFileSource)
Set Filedest = ShellClass.NameSpace(sFileDest)
Set Folderitems = FileSource.Items
Call Filedest.CopyHere(Folderitems, 20)
Case "UNZIP"
If Right$(UCase$(sFileSource), 4) <> ".ZIP" Then
sFileSource = sFileSource & ".ZIP"
End If
Set ShellClass = New shell32.Shell <--- Here's where it fails
Set FileSource = ShellClass.NameSpace(sFileSource)
Set Filedest = ShellClass.NameSpace(sFileDest)
Set Folderitems = FileSource.Items
Filedest.CopyHere Folderitems, _
NoUserInterfaceIfErr + _
NoConfirmOfNewDir + _
YesToAll + NoProgBox
Case Else
End Sele}
发布于 2016-03-09 04:33:25
解决方案可能是使用后期绑定。
所以使用Set Obj = CreateObject("Shell.Application")
迟装订是一种对话。
YourProg:嗨,shell,您有namespace命令吗?
壳牌:是的,我知道,这是5号命令。
YourProg:请执行命令5-这是参数
Shell:这是返回数据(如果有的话)。
早期绑定您的程序是用GUID和跳转到vtable中的第5偏移量。
https://stackoverflow.com/questions/35882629
复制相似问题