掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
vb.net 2003 7-zip32.dllの呼び出だしについて (ID:141427)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
LoadLibrary 経由で無ければならないのでしょうか? 7-zipAPI.txt を見ながら、提示されたソースを LoadLibrary 無しのコードに書き換えてみました。 手元に 2003 が無いので、動作確認は取れませんけれども。 Imports System.Runtime.InteropServices Imports System.Text Imports System.IO Imports System Public Class Form1 ' : ' : ' : Private Declare Auto Function SevenZip Lib "7-zip32" ( _ ByVal hwnd As IntPtr, _ <[In]()> ByVal szCmdLine As String, _ ByVal szOutput As String, _ ByVal dwSize As UInteger) As Integer Private Declare Auto Function SevenZipGetVersion Lib "7-zip32" () As Short Private Declare Auto Function SevenZipGetRunning Lib "7-zip32" () As <MarshalAs(UnmanagedType.Bool)> Boolean Private Enum CHECKARCHIVE RAPID BASIC FULLCRC End Enum Private Declare Auto Function SevenZipCheckArchive Lib "7-zip32" ( _ <[In]()> ByVal szFileName As String, _ ByVal iMode As CHECKARCHIVE) As <MarshalAs(UnmanagedType.Bool)> Boolean Public Shared Sub Extract7z( _ ByVal command As String, _ ByVal archiveFile As String, _ ByVal extractDir As String) '指定されたファイルがあるか調べる If Not File.Exists(archiveFile) Then Throw New FileNotFoundException("ファイルが見つかりません。", archiveFile) End If Dim ver As Short = SevenZipGetVersion() Console.WriteLine("バージョン:{0}", ver) '動作中かチェック If SevenZipGetRunning() Then Throw New InvalidOperationException("DLLが動作中です。") End If '展開できるかチェック If SevenZipCheckArchive(archiveFile, CHECKARCHIVE.RAPID) Then Throw New ArgumentOutOfRangeException( _ "archiveFile", archiveFile, "対応書庫ではありません。") End If 'ファイル名とフォルダ名を修正する If archiveFile.IndexOf(" "c) > 0 Then archiveFile = """" & archiveFile & """" End If If Not extractDir.EndsWith("\") Then extractDir &= "\" End If If extractDir.IndexOf(" "c) > 0 Then extractDir = """" & extractDir & """" End If '展開する Dim ret As Integer = SevenZip( _ ActiveForm.Handle, _ String.Format(command, archiveFile, extractDir), _ Nothing, _ 0UI) '結果 If ret <> 0 Then Throw New ApplicationException("書庫の展開に失敗しました") End If End Sub End Class
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.