• ベストアンサー

UNLHA.DLLの使い方

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

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

"-n1"です。 (unlha32.dll)

AnyBody
質問者

お礼

-nと-n1の違いは後で調べます。 ありがとうございました。

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

UNLHA32 に同コンされている COMMAND.TXT を読む限りでは、-n スイッチを 付ければ良いんじゃないかとおもいます。 # 試してないので、一応、自信なしとしておきます

AnyBody
質問者

お礼

できました。ありがとうございました。

関連するQ&A

  • UNLHAで解凍後に削除したい

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

  • 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

  • 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なのですが。 何か気づかれた点等あれば、ご指摘ください。 宜しくお願い致します。

  • windows10 VB unlha32.dll

    VB で、debug モードでビルドするとOK,ですが、release モードでビルドすると下記エラーになります。 ”unlha32.dll がインストールされていません” unlha32dll は、実行ファイルのカレントディレクトリ、cドライブのwindows、その下のシステム32、sysWOW に入れています。windowsXP、VS2010のころに造った物を、win10用に流用して作り替えています。今は、VB2017 です。 解決方法を教えてください、unlhaの置き場、パス指定か、VBのreleaseビルドの設定か、などと類推します。. 

  • ZIPを操作したい(VB.NET、dll)

    現在VB6で、UNLHA32.dllを使用して ・LZHの圧縮 ・LZHの解凍 ・LZH内のテキストファイルの読み込み の操作をしています。 今回、VB6からVB.NETへ言語を変換することになりました。 そのタイミングで、LZHではなくZIPを使うことにもなりました。 (LZHはセキュリティ的に使うべきでないからという理由だと思います。) そこでLZHで行っていた操作を、ZIPに置き換えて実現するにはどうすればよいでしょうか? VB.NETの機能でZIP操作できるようなのですが、FrameWork4.5以上からのようなので、バージョンで操作できる・できないが出てしまうならdllを使うべきなのかなと思っています。 dllで調べていくと、UNZIP32.dllやzip32.dll、zip32j.dllなどがあることを知りました。 UNLHA32.dllではそれ1つで解凍や圧縮ができたのですが、 UNZIP32.dllでは解凍のみ、zip32.dllやzip32j.dllは圧縮のみのようです。 ただ、本文の最初に挙げていた、 圧縮状態のまま、その中にあるテキストファイルの読み込み がどうすれば実現できるのかが調べていても分かりませんでした。 また、先ほど挙げたZIP操作のdllをVB.NETで使用していくにあたっての コーディングなどについてもなかなか検索しても見つからず、 どうすればいいのか見えてこない状態です。 (私の検索方法が良くないのかもしれませんが・・・) それ以外にもzip32.dllとzip32j.dllの両方を組み合わせて使うようなのですが、 その理由も分からないです。 助言をいただけないでしょうか。 p.s. 入社したてのスキル不足なSEです。 初歩的な質問だったらすみません。

  • 【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は上記の同フォルダにあります。) このエラーの対処、及び、これからすべきことを ご指導頂けませんでしょうか。 お手数ですが、よろしくお願い致します。

  • 7zip32.DLLを利用した自動解凍書庫

    お世話になります。 藁にもすがる思い出で書き込みいたします。。。 現在、7Zip32.dllを使用してのファイル圧縮を行っているのですが、 自動解凍書庫に対して「解凍時の解凍先ディレクトリの指定」がうまく出来ず困り果てています。 1、hoge.7zファイルを作成 ↓ 2、コマンドラインにて copy /b 7zs.sfx + config.txt + hoge.7z jidou.exe を実行 hoge.7zの自動解凍書庫ファイル jidou.exeを作成 ↓ 3、jidou.exeを実行   実行時に解凍先を求めるダイアログが表示される   ※この解凍先の初期値に、C:\foo を指定したい   (現在ではjidou.exeの実行を行ったパスが表示されてしまいます) ↓ 4、3で指定したディレクトリにhoge.7zの解凍を行う 上記手順の3だけがうまくいっておりません。 UNLHA32で同様のコードを書いた際はサブスイッチで指定した気がするのですが・・・。 7zip32.dllのマニュアルには同様のコマンドが見つけられませんでした。 ご存知の方、御回答を何卒お願いいたします。

  • VB.NETでUnzip32.DLLを使うには?

    VB2005または2008でUnzip32を使ってzipファイルを解凍する方法を教えてください。 Unzip32のバージョンは5.42、OSはXP32bitSP3です。 UnZipGetVersionではきちんとバージョンが返ってきますので、DLL自体には問題はないと思います。 Classの下に Public Declare Function UnZip Lib "unzip32.dll" (ByVal hwnd As Long, ByVal szCmdLine As String, ByVal szOutput As String, ByVal dwSize As Long) As Long を記述し、 UnZip(0, "-o C:\01.zip E:\", vbNull, 0) と命令してもコンパイラエラーになってしまいます。 第二引数のC:\01.zipはちゃんと存在するファイルであることを一応書き添えておきます。 引数の記述がおかしいと思うのですが、Unzip32のドキュメントを読んでも解決できません。 一日中ぐぐってもVB2005以降での構文サンプルも見つかりませんでした。 UnzioExtractでも引数の説明が意味不明で解凍できませんでした。 できましたら第一から第四までの引数になにを入れたらいいのか、 具体的に指示していけたらありがたいです。 よろしくお願いします。

  • DLL VBとC++

    VBAからVC++2005のDLLを呼び出すプログラムを書いています。 VB側で作成したcpp_proc関数を呼ぶとVBアプリ自体が落ちました。 DLLのreturnの直前に以下のMessageBoxで表示させるとそこまでは表示され、 リターンを押すと、落ちました。 VB側の引数の値 String * 8192が悪いのでしょうか? return直前まで動作していたので、DLLの戻り値に何か原因があるのでしょうか? ついでの質問ですが、DEFの @1は無くても動くのでしょうか? 意味が知りたいです。 // ----- C++ (DLL側) ----- int __stdcall cpp_proc(LPCSTR inp, LPSTR out) { ... 省略 MessageBox(0, "ここまで通過", "debug", MB_OK); return 0; } // ----- DEF ----- LIBRARY "example" DESCRIPTION 'テスト' EXPORTS ; 明示的なエクスポートはここへ記述できます cpp_proc @1 '----- VB側 ----- Public Declare Function cpp_proc Lib "example.dll" _ (ByVal inp As String, ByRef out As String) As Integer Public Sub Test() Dim ret As Integer Dim inp As String Dim out As String * 8192 ret = cpp_proc(inp, out) MsgBox("ret=[" & Cstr(ret) & "]"); End Sub

  • メモリについて

    お世話になります。 現在、Becky!のプラグインを作成しております。 とりあえず思うような動きにはなったのですが、今回初めてC++ を使ったので、作成したものの正直なところあまり理解して 出来ておりません。 作成したプラグインは送信ボタンが押されたときにメッセージを 表示するもので、メッセージの本文はiniファイルから読み込む ようにしております。 char buf[256]; DWORD ret; ret = GetPrivateProfileString("message", "msg", "メッセージ無し", buf, sizeof(buf), "C:\\Program Files\\RimArts\\B2\\PlugIns\\becky.ini"); で、bufの内容をMessageBoxで表示してます。 そこで質問ですが、当該プラグインが実行される都度、メモリが食いつぶされて しまうってことはあり得るのでしょうか。 メッセージが表示され、OKまたはキャンセルボタンが押されたら、 そこでメモリは解放されるという認識なのですが。。 ご教示の程、宜しくお願い致します。

専門家に質問してみよう