2017/02/14

UnAceV2J.DLL


ACE Compression SoftwareのUnAceV2.DLLを使用して、共通アーカイバ仕様APIを実装したDLLです。対応アプリケーションから呼び出されます。

概要

ACE書庫を解凍するためにACE Compression Softwareが提供するUnAceV2.DLLは、慣れればアプリケーションから使えない事はないが、日本人の開発者には使い慣れた共通アーカイバ仕様のAPIの方が使いやすいと思うので、ラッパDLLを作成してみました。
ちなみに、世間には同様のコンセプトのラッパDLLが存在しますが、いつまで待っても進捗しないので、自アプリでACE書庫展開を実現するには自分で作るしか!と思い作成を開始し、予想通り先にリリースしてしまいました。

UnAceV2J.DLLがやっている事

UnAceV2.DLLで多用されているコールバックなAPIをクラス内に実装し、結果出力を内部変数に保持し、共通アーカイバ仕様APIの戻り値に加工します。

インストール方法

同梱されたUnAceV2.DLLまたは、 ACE Compression Softwareから取得したUnAceV2.DLLと、このUnAceV2J.DLLをWindowsのシステムディレクトリに置いてください。

アンインストール方法

インストール時にコピーしたファイルを削除してください。

使用方法

UnAceV2J.DLLに対応したアプリケーションを使ってください。
UnAceV2J.DLL は、共通アーカイバ仕様DLLのAPI仕様のほとんどを満たしている完成品です。(バグがあったらごめんなさい)アプリケーションから使用するための必要最低限の API は実装されています。
APIの使用方法に関しては、書庫付属のドキュメントを参照してください。

履歴

バージョン 日付 項目
0.01 2004/11/30 最初のバージョン。
0.02 2004/12/25 偽Unace32.dll機能を実装。ネイティブなUnAceV2J.DLL内APIをコールするラッパAPIで、UnAceV2J.DLLをUnace32.dllとリネームすると、Unace32.dllを利用するアプリケーションから使える...かも。
「l」コマンドの場合は、パス情報を出力しないようにした。(これが実用的かどうかは別として、UnAce32.exeの仕様に合わせるということで)
Unlha()の仕様に倣い、UnAce()の時に、引数の_hwndに ::EnableWindow(_hwnd, FALSE) するようにした。
UnAceV2.DLLを同梱。 ソース添付。
0.03 2004/12/28 UnAceFindFirst, UnAceFindNextでの書庫内データ取得時に最後のファイルが取得できないバグの修正。
0.04 2005/05/17 storedメソッドで圧縮されたファイルをUnAceGetMethodで取得できないバグの修正。
0.05 2006/02/25 ファイルが列挙されない事があるバグを修正した。
0.06 2010/05/27 Visual Studio 2005でリビルド。
UnAceV2.DLLはVer2.6のものを同梱。
0.07 2010/07/04 Visual Studio 2010でリビルド。
0.08 2010/08/08 Visual Studio 2010 のMFCをスタティックリンクするとDLLのサイズが巨大になるので、MFCをやめてATL/WTLを使用するようにソースを修正。
レスポンスファイルの両端が「"」で囲まれている場合に対応。
 0.092016/03/29  Visual Studio 2015 でリビルド。サポートサイトのURLとメールアドレスを変更。

『指定外の場所へファイルが展開されてしまう脆弱性』の問題の対応

『指定外の場所へファイルが展開されてしまう脆弱性』の問題というのが書庫を展開するDLLやアプリケーション側で対応されたりしていますが、後発の UnAceV2J.DLLでは、0.01から対応済みで、コマンドラインオプションで明示的に「--ea0」としない限り「..」を含んだファイルはユーザの許可無しに展開されません。詳しくは、UnAceV2CMD.txtの「--ea」オプションを参照してください。

ACE 書庫作成機能について

ACE 書庫からの展開機能に関しては、フリーソフトとして UnAceV2.DLL が提供されていますが、圧縮機能に関しては別DLLで有料となっており、私自身レジストするほど ACE 書庫の魅力を感じないので、対応する予定はありません。
同様のコンセプトで、同じくACE書庫を扱える某DLLが、将来に ActiveAce対応するらしいです。また、某所にて ActiveAce に対応した Ace32.DLL というものもあるらしいです。どちらの場合も、シェアウェアである ActiveAceを利用するため、試用期間が過ぎての利用は、ActiveAce のレジストをする必要がありますね...。既に過去の話題で、現実には何も実現していません。

ダウンロード

unacev2j009.zip (227k)

2017/02/12

SL for Win32 Console

概要

UNIX系のファイルリストを表示するコマンドとして、lsがありますが、たまに打ち間違えてslとかやっちゃうと蒸気機関車がコンソールを横切るってのがあります。
従来の sl コマンドを Windows で動かすには、Cygwin などの擬似UNIX環境が必要で、敷居が高かったので Win32 用に移植をしてみました。
ただ、そのまま動かすだけではつまらないので、SE(効果音)も付けてみました。
sオプションでSEを抑制できます。(デフォルトで再生)
画面を横切るSLの勇姿をじっくり見たい人の為に、速度調節オプションも追加しています。(-1〜-9:デフォルトは-2)
SE(効果音)について SLの音を公開しているサイト「E127野村の鉄道音のページ」の管理人であるE127野村様に許可を頂き、プログラムのリソースに格納しています。

動作環境

Windows xp以降のコンソール環境。(x64も含む。)
残念ながら、Windows 2000以下、Windows 9x系は動作しません。
今バージョンは、Visual Studio 2010 C/C++ランタイムライブラリもスタティックリンクしてビルドしたので、バイナリ単体で動作するはずです。
ライセンスについて オリジナルがソースで公開されており、サイトにも特にライセンスに関して触れられていません。
ですが、本ソフトウェアは、オリジナルに順規します。
新山(へろぱ)自身の著作権は放棄します。
curses.h以下のソースについては、Public Domain cursesのソースを流用しました。
ソースについて 基本的にオリジナルの作者様のソースを元に、Visual Studio 2010 C/C++でコンパイルするようにしただけなので、積極的に公開しようとは考えていませんが、『どうしてもソースが欲しい!』という人が多いようでしたら、公開する事にします。(今までに「ソースが欲しい」と言ってきた人は1人しか居ません。)

関連リンク

ご意見ご要望がございましたら、このページのコメント欄へ

豊田正史とslコマンド(Masashi Toyoda and SL command)

オリジナルのソースがこのサイトで公開されています。

E127野村の鉄道音のページ

SLをはじめ、すばらしい鉄道音が公開されています。リソースとしての再配布の許可を頂き、ありがとうございます。
ダウンロード
sl_3.03.03_win32_console.zip (247KB)

2017/02/08

VB De FilMtn


概要



NEC PC-9800シリーズ用のFILMTN(テキスト版)をエミュレーションするプログラムです。またオリジナルの機能を引き継いでいますので、ファイラーとしても機能します。 (^_^;)

このプログラムのウリは、

  1. あくまでもPC-9800版のFILMTN(テキスト版)をエミュレーションしているので、PC-9800系のマシンからの移行がスムーズ。もちろんAT互換機でも快適です。
  2. 極力1つのウィンドウで表示するようになってるので、1つのウィンドウだけのスペースがあれば良い。
  3. インストールされたディレクトリ以外にデータファイルを作らない。(勝手にルートディレクトリにファイルを作成しない。)
  4. キー操作だけで快適にファイル操作ができる(というか、キーボードでないと操作できない。)ので、ノートパソコンでも快適。
  5. フォントを変えてV-Text気分。(PC-9800シリーズユーザーは憧れましたよね?)
  6. LHMTNの機能も内蔵しているので、シームレスにファイルが扱える。別々に作るよりは効率がよいし、ファイルサイズも小さくなってるはず。
  7. 圧縮ファイルに関しては、現時点で公開されているCommon Archive Projectの多くのDLLに対応してます。
  8. フリーソフトであるのでレジストしなくても自由に使える。(でも無保証。)
  9. ソースも公開しているので、自由に改造が出来る。(社内用に機能を制限したり、オリジナルなキーアサインも可能。機能を追加して、宇宙最強のファイラーにも仕立てられる...かも。)
  10. Visual Basicアプリにつきものの、ActiveX コントロールのバージョンの違いで動作しない、とかは、APIを直接コールしているので無い。配布ファイルも小さくて済む。(でもVisual Basicのランタイムモジュールは巨大ですが...。)

既にWindowsには有名なFILMTN, LHMTN移植アプリが複数存在するようですが、仕様(FILMTN, LHMTNの移植に対する方向性とか)に馴染めないので、このプログラムを作成しました。一度VBでファイラーというものを作ってみたかったし。決してレジストが勿体無いとかの理由ではないです。 (^^ゞ

前の会社でNEC PC-9800シリーズを使用してDOSアプリ(なんとN88BASIC製アプリ)で仕事をしていたのですが、1998年度からWindows 95で仕事をすることになったので、急遽Windows 95用のFILMTNをでっち上げました。私以外の人はFILMTNの使用方法しかパソコン操作を教えてなかったので...。 (^_^;)

なお、オリジナル版の作者であるK.Ishida(石田 健仁)氏には、了承を得ました。

動作環境

マシン


日本語版 Windows NT4.0/2000/XP/Vista/7/8/8.1/10が動作するAT互換機。

OS


日本語版 Windows NT4.0/2000/XP/Vista/7/8/8.1/10 および、Microsoft Internet Explorer 4.0以上がインストールされている環境。

具体的に書くと、SHLWAPI.DLLのバージョンが4.7以上、HTMLヘルプ1.1形式が表示できる環境。
今時のOSであれば問題なく動くんじゃないかな?

履歴

バージョン 日付 項目
0.59まで
いろいろありました...。
0.60 2010/09/21
VBDeFM.Exe

Unicode(UTF-16)対応。

当然のことながら、サロゲートペアを含む文字のファイル名に対応しています。

Unicode対応をすることにより、Windows 9x系OSサポートを打ち切ります。

タイムスタンプの変更ダイアログに「作成日時に合わせる」「更新日時に合わせる」ボタンを追加。

テラバイト級ハードディスクで、サイズ表示時に単位を「テラバイト」と全角カタカナで表示され表示が崩れる問題を修正。

UnLha32.DLLによるLZH圧縮ファイルのUnicode対応。
0.61 2010/11/18
VBDeFM.Exe

単独のファイルを「P」キー押下して表示されるウィンドウのタイトルがUnicode文字の場合化ける問題を修正。

内蔵ビュアーのテキスト表示が、文字コードに関係なく表示できるように改善。

ファイル名の表示方法が「自動」になっていた場合に、カレントディレクトリの移動を行った直後のアクティブなファイル表示が乱れる問題を修正。(前バージョンで入り込んだバグ)

ディレクトリ名がUnicode文字の場合に移動できない問題を修正。

Unicodeファイル名のタイムスタンプの変更ができるように改善。

「K」キー押下によるディレクトリの作成の動作改善。
0.62 2010/12/05
VBDeFM.Exe, FMCust.Exe

起動時にSetDllDirectory("")を行い、意図しないDLLのロードが行われないように修正。
0.63 2011/02/19
VBDeFM.Exe

7-zip32.DLLによる7Z圧縮ファイル、ZIP圧縮ファイルのUnicode対応。

Tar32.DLLによるXZ形式・LZMA形式の操作に対応。

ファイルのサイズが0のときに、内蔵ビュアーがエラーとなっていたのを修正

UnIso32.DLLによるISOファイルの操作に対応。

FMCust.DLL

Tar32.DLLによるXZ形式・LZMA形式の操作に対応。

7-zip32.DLLによるZIP圧縮ファイルのメソッドを追加。

EzExt.Ini

いくつかの再定義。
0.64 2011/02/28
VBDeFM.Exe

カレントディレクトリをルートにしたときに、ディレクトリ表示が見えなくなっていたのを修正。
0.65 2013/01/03
VBDeFM.Exe

カレントディレクトリをUNCパスのディレクトリへ移動できないバグの修正。(Ver 0.6x系からのバグ)

ZIP書庫内のファイルを指定して展開する場合で、7-zip32.dllを使用するオプションが有効の場合、展開先に展開されないバグの修正。(Ver 0.63からのバグ)

ZIP書庫内のファイルを削除する場合で、7-zip32.dllを使用する場合にエラーで削除できない問題を回避。

「Lzhファイルの場合、リムーバブルドライブの時はテンポラリディレクトリに解凍後移動する」オプションを廃止。

Windows 8への対応
FMCust.DLL

Windows 8への対応(ダイアログの文字列表示が切れる対応)
0.66 2013/08/04
VBDeFM.Exe

ディレクトリの存在しないドライブでのツリー表示でルートが表示されない、コピー・移動ができないバグを修正。
0.67 2014/01/04
VBDeFM.Exe

Windows 8.1対応。
FMCust.DLL

Windows 8.1対応。
0.68 2016/03/21
VBDeFM.Exe

Windows 10対応。
FMCust.DLL

Windows 10対応。
0.69 2016/12/25
ミニマム版での注意点のドキュメントを追加
VBDeFM.Exe

IDE内動作でのサイド・バイ・サイドDLLについての挙動の調節(実行中の動作は変わらないです。)
EzExt.DLL

デバッグ時のメッセージボックスが表示されるバグの修正 既知のバグ
0.70 2018/06/03 一画面で収まるテキストを内蔵ビュアーで表示してPgDnや Shift + Homeなどの行移動を行うとエラーが発生するバグを 修正。

既知のバグ


特に無いと思いますが、発見した場合ご連絡していただけると対処できるかもしれません。

ダウンロード

vbdfm70m.zip 実行ファイルのみのセット (798KB)
vbdfm70s.zip ソースのみのセット (837KB)
vbdfm70f.zip セットアッププログラムを含んだセット (1,579KB)

フルセット版にはVisual Basic 6.0のランタイムが付属しています。
残念ながらVisual Basic 5.0とVisual Basic 6.0の開発環境は共存できません。ただし、アプリケーションは共存できるようです。

ユーザーからは、Visual Basic 5.0のアプリもVisual Basic 6.0のアプリも問題なく使えるようです。

ミニマム版は旧バージョンからバージョンアップする場合にご利用ください。
Visual Basic 5.0でコンパイルする時には、VBDeFMVB5.VBPを読み込みます。