• 締切済み

UNLHAで解凍後に削除したい

お世話になります。VB6.0でUnlha32を使用してLZHファイルを解凍後、LZHファイルを削除する処理を作ってみたのですが、LZHをいざKILLステートメントで削除しようと思うと、”パスが無効”と出てしまって削除できません。 ret=Unlha(・・・) if ret = 0 then ChDir LZHファイルがあるフォルダ Kill LZHファイル  ← ここでエラーが出る end if こんな感じなのですが、Killの前で何かやっておかなければならないのでしょうか? 例えばNothing や Closeのように 処理と切り離すコマンドが必要なのかな?

  • NKNK
  • お礼率53% (8/15)

みんなの回答

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.3

-jsbスイッチは指定していますよね?

NKNK
質問者

補足

解凍は下記の通りでやってます。 ret = Unlha(Me.hWnd, "e -ngm """ & FreezeFile & """ """ & workPath$ & """ ""*.*""", Buff, 64000) 成功すれば ret=0 ですよね。 皆様、色々ご回答ありがとうございました。 結局、イージーミスであることが発覚しました!! 元々、解凍しているファイルはCD-ROMに焼いたものを手で固定フォルダへコピー後、解凍プログラムを起動していたものであり、つまり!そのままだと「読み取り専用」の属性が付いたまま削除処理をしようとしているのですね。 本当にごめんなさい。(こんな簡単なことがわかるのに丸一日かけてしまいました(TT)) 無事解決しました。

回答No.2

LZHファイルが「別のドライブに存在」するのではないでしょうか? ChDirでは「そのドライブのフォルダが変更されるだけ」で,ドライブは変更しません. そして「フォルダの変更状態はドライブ毎に独立して存在する」のです. ret=Unlha(・・・) if ret = 0 then ChDrive LZHファイルがあるドライブ ChDir LZHファイルがあるフォルダ Kill LZHファイル end if こんな感じでいかがでしょうか? おそらくヘルプを読まれたようですね. KILLステートメントの例が,フルパス指定ではなかったのかもしれません. しかし,私もKojiSさんのアドバイス通り,KILLステートメントにフルパス指定される方がベターかと思います. がんばってください.

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.1

なぜ Killでフルパスを設定しないかが疑問です。一度フルパスで指定してみてください。それでエラーになる場合は、フォルダかファイル名が間違っています。

NKNK
質問者

補足

ごめんなさい、説明が足りませんでした。 フルパスでも試してみましたがダメでした。 あるマシンではエラーが出ないのですが、処理スピードが遅いマシン(Pentium133)だとダメなんです。 そこで、きっとファイルが「処理中」or「開いている」といった情報がどこかに残っていて、削除できない状態にあるのではないかと思っています。 でもOpenステートメントのCloseのようなコマンドが書庫解凍の時には何になるのかがよくわかりません。 下手な説明ですみません。

関連するQ&A

  • UNLHA.DLLの使い方

    VBで以下のようにLZHの解凍をしています。 ret = Unlha(Me.hwnd, "e -c1 -m1 c:\fromfile.lzh c:\tofile", buf, 0) このままだと解凍状況ウィンドウが表示されてしまいますが、これを非表示にすることはできるのでしょうか? 何かオプションを指定すれば良いのでしょうか? ご存知の方、助けてください。

  • unlhaでフォルダごと自己解凍形式にするには?

    unlhaで圧縮したファイルを自己解凍形式(exe)にする場合、 フォルダとその下のファイルをいっしょに自己解凍形式にするにはどうしたらいいのでしょうか? lzhにはできますが、exeにはできません。 教えて下さい。

  • UNLHA32アンインストール

    Windows XPを使用しております。 以前lzhを解凍するためにUNLHA32.DLLをダウンロードしました。 現在は不要になったのでアンインストールしたいのですが、 「プログラムの追加と削除」からアンインストールを行っても、 いくつかのファイルは削除できなかったと言われ、 エクスプローラからフォルダを見てみると、 アンインストール前と同じようにそのままファイルが残っています。 すべて安全に削除するためにはどうしたらよいのでしょうか? よろしくお願いいたします。

  • lzh形式の解凍について・・・

    lzh形式の圧縮ファイルを解凍するため、 「Unlha32.dll」というやつをインストールしたのですが、 lzh形式のファイルを解凍すると 「CRC エラーが発生しました」とか「格納ファイルのハフマンコードが壊れています」と出て,解凍できません。 だれか助けてください。 OSは98です。

  • lzhからファイルの削除

    お世話になります。 直接は関係ないかも知れませんが、 winfdなるファイル操作aplを使っています。 winfdは圧縮・解凍にunlha32を使っています。 lzhの中のファイルを削除したいのですが、 良い方法はありますでしょうか。 現在は、 一度全てを解凍し、該当ファイルを削除した後、再圧縮しています。 宜しくお願いします。

  • 【VC++2005(CLR)】C++/CLIへのUNLHA32の導入、及び、lzh圧縮解凍の実行の仕方について

    いつもお世話になっています。 VC++初心者です。 以前の質問と同様になってしまいますが、 再度質問させて頂きたいと思います。 やりたいことは、VC++2005(CLR)で ボタンを押しすと、lzh圧縮、解凍するようにさせたいです。 ↓こんなイメージです。 private: System::Void button_Form1_Click(System::Object^ sender, System::EventArgs^ e) {   String^ strFileName = "aaa.txt"//ファイル名   String^ strCompressFileName = "aaa.lzh"//圧縮されたファイル名   //ここにlzh解凍(べつのボタンでlzh圧縮)をしたい } ※先頭行に全角スペースを使用しています。 現在、他の方からアドバイスを頂いて、以下の状態まで来ました。 ・UNLHA32をダウンロードしました。  (格納先:C:\Program Files\ArchiverDll\UNLHA32) ・Form1.h内のボタンに実装するので、以下のコードを  Form1.h内の「#pragma once」の下に追加しました。 #include "C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.H" ・LIBの追加ができていません。  LIBの追加は、  ・「ソリューションエクスプローラ」のプロジェクト名を右クリック    し、「プロパティ」を選択。  ・「構成プロパティ」-「リンカ」-「入力」をクリック。  ・「追加の依存ファイル」に「C:\\Program Files\\ArchiverDll\\UNLHA32\\UNLHA32.LIB」    を記入。  この時点で、エラーが発生しています。 (UNLHA32.LIBは上記の同フォルダにあります。) このエラーの対処、及び、これからすべきことを ご指導頂けませんでしょうか。 お手数ですが、よろしくお願い致します。

  • UNLHA32.DLLとMkLzh/ExLzhのインストールについて

    またやってしまいました。 VECTORのサイトからダウンロードしたUNLHA32.DLLとMkLzh/ExLzhの圧縮解凍ソフトの「解凍」がうまくいきません。UNLHAのほうは、「自己解凍書庫」で開きなさいというメッセージがでるのですが、これは、自分で新しいファイルをつくるのか、それとも、そういうファイルか何かがあるのか、さえ分からない状態です。 だれか、インストールの方法を教えて下さい。 加えて、「マイドキュメント」の中にあった。別のプログラムがファイルの中で解凍されてしまい。ちらかっています。このプログラムはいらないので消去したいのですが、これは、右クリックで削除していくしかないのでしょうか?

  • エクセルVBA 自己解凍書庫作成

    下記コードで処理しています。WinSFX32設定画面を表示させないようにするには、 どうすればよろしいでしょうか?設定については、ウィンドウタイトル~解凍 後実行コマンドは、すべてブランクで、下段のチェックボックス欄はすべてチェ ックを外したままにしたいのです。お手数ですが、よろしくお願いします。 Command = "a -a1 -r2 -x1 -jp1 -jm4 " & """" & LzNam & """" & " " & """" & XlNam & """" Result = Unlha(0, Command, RetMsg, 255) If Result = 0 Then MsgBox RetMsg, vbInformation, "LZH 完了" Else MsgBox RetMsg, vbCritical, "LZH 失敗" End If Command = "s -jp1 -x1 -gw3 " & """" & LzNam & """" & " " & """" & ExNam & """" Result = Unlha(0, Command, RetMsg, 255) If Result = 0 Then MsgBox RetMsg, vbInformation, "変換完了" Else MsgBox RetMsg, vbCritical, "変換失敗" End If

  • unlha32.dll を使用した自己解凍書庫の作成について

    今回チャレンジしているのが 自己解凍書庫でかつ解凍後実行コマンドを指定するケースです。 これをVB6から作成しようとしていますが、自己解凍書庫ができるまでは、うまくいくのですが、解凍後実行コマンドのスイッチを指定しても認識されていないような動きです。(自己解凍書庫をダブルクリックで実行(解凍)後、指定したコマンド(notepad.exe)が起動しない。 コマンドは以下の通り指定しています。 Dim var As lha ←unlha32.dll(V1.98b)は既に定義済み Set var = New lha 'まずLZHファイル var.lha("a -gw4 -xr1 -gye<notepad.exe> -w<c:\work> C:\work\archive C:\work\csv\ *.* ") '次に自己解凍書庫(exe)にする。 var.lha("s -gye<notepad.exe> -gw4 c:\work\archive.lzh c:\work\ ") この手順で行っています。 上のexeを実行後、notepadが起動できればOKなのですが。 何か気づかれた点等あれば、ご指摘ください。 宜しくお願い致します。

  • VB2005ExpressEditionでのUnlha32.dllのエラーコードの出し方

    現在VB2005ExpressEditionでUnlha32.dllを使ってファイルの解凍をしようとしています しかし、失敗するのでエラーコードを出させるようにしてみました でも、出てきたのはどうやらエラーコードとは違うもののようなのです Unlha32.dllのエラーコードの出し方が間違っているようなのでエラーコードの出し方を教えてください ソースです↓(半角スペースは全角スペースにしてあります) Public Class Form1   Private Declare Function Unlha Lib "Unlha32.dll" (ByVal CmdLine As String) As Long   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click     MsgBox(Unlha("e C:\test.lzh -x1a1 -c C:\ *.*"))   End Sub End Class