-1

Shell32.dll を使用して単純な圧縮ファイルを解凍しようとしています。開発用 PC (Win7 64) で Interop.Shell.dll として表示される Shell32.dll への参照があります。中央の場所からファイル コピーを介して exe の更新をプッシュし、.dll に対してこれを実行したいと考えています。良い。

PC にインストールされているのと同じファイルを使用して、XP でプログラムが失敗します。XP \Windows\System の Shell.dll を Interop.Shell.dll に名前を変更して使用しようとしましたが、それは簡単だと思います。dll を呼び出そうとすると、読み込めないというエラーが発生します。

私は、プラットフォームにとらわれないdllを使用する解凍を行う別の方法も開いています。Process.Start() 経由で 7Zip を使用しましたが、クライアントにプログラムをインストール/更新する必要はありません。

XP 以降の任意の Win OS で実行できる共通の分母 Shell32.dll はありますか?

または、Shell32.dll を使用する場合、OS ごとに個別のビルドを作成する必要がありますか?

ありがとう!

Function Unzip(FilePathofZip As String, DestinationFolder As String) As Boolean
    Try
        Dim sFile As String = FilePathofZip
        ' requires referenc to windows.system.shell32.dll
        Dim sc As New Shell32.Shell()

        If IO.Directory.Exists(DestinationFolder) Then IO.Directory.Delete(DestinationFolder, True)
        Application.DoEvents()
        IO.Directory.CreateDirectory(DestinationFolder)
        'Declare the folder where the files will be extracted
        Dim output As Shell32.Folder = sc.NameSpace(DestinationFolder)

        If FilePathofZip.EndsWith(".kmz") Then
            sFile = FilePathofZip & ".zip"
            IO.File.Move(FilePathofZip, sFile)
            Application.DoEvents()
        End If

        'Declare your input zip file as folder 
        Dim input As Shell32.Folder = sc.NameSpace(sFile)
        'Extract the files from the zip file using the CopyHere command .
        output.CopyHere(input.Items, 4)
        Return True
    Catch ex As Exception
        MsgBox(ex.Message)
        Return False
    End Try
End Function
4

1 に答える 1