tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル CreateObjectにてShell32を使用してZIPが展開されない。
投稿日: 2008/12/01(Mon) 15:23
投稿者おばおば
開発環境: Microsoft Visual Studio 2005 Version 8.0.50727.762
OS: Mirosoft Windows XP Professional Version2002 ServicePack 2

はじめまして。いつも参考にさせていただいております。
VB.NETでShell32を使用してZIPを展開しようとしております。
開発中に不可解な現象に遭遇いたしました。
お分かりになる方、おられませんでしょうか。

下記コードのように、destFlderにShell32.Folderを指定すると問題なく展開できます。

' zip展開
Dim sc As Object = Nothing
Dim srcFlder As Object = Nothing
Dim items As Object = Nothing
Dim destFlder As Shell32.Folder = Nothing
Try
    sc = CreateObject("Shell.Application")
    srcFlder = sc.NameSpace(mcnsWorkPath & mcnsMenuZipName)
    items = srcFlder.items
    destFlder = sc.NameSpace(mcnsWorkPath)
    destFlder.CopyHere(items, FOF_NOCONFIRMATION + FOF_SILENT + FOF_NOCONFIRMMKDIR)
Finally
    If Not sc Is Nothing Then
        System.Runtime.InteropServices.Marshal.ReleaseComObject(sc)
        sc = Nothing
    End If
    If Not destFlder Is Nothing Then
        System.Runtime.InteropServices.Marshal.ReleaseComObject(destFlder)
        destFlder = Nothing
    End If
    If Not srcFlder Is Nothing Then
        System.Runtime.InteropServices.Marshal.ReleaseComObject(srcFlder)
        srcFlder = Nothing
    End If
    If Not items Is Nothing Then
        System.Runtime.InteropServices.Marshal.ReleaseComObject(items)
        items = Nothing
    End If
End Try

しかし、このコードでShell32.Folderの部分をObjectに置き換えると、
展開が行われず、エラーにもならずに処理が終わってしまいます。

Webを検索してみたところ、
通常はObjectで問題なく処理出来ているように見えましたので、
私の環境だけかと思い、
私のOSだけでなく他のOSでも試してみたのですが、同様の結果となりました。

Shell32.DLLは1MBもあり、配布を避けるために、
参照に追加しない方法を考えており、上記のコードにて実装しようとしております。

よろしくお願いします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。