Back A No Hits OVA.

作品情報

作品名
Back A No Hits OVA.(バカノヒトツオボエ)
作者名
はりまお
制作機材
Core i7-4770 3.40GHz + 8GB RAM
Windows 10 Pro  (64bit, 21H2)
開発言語
Visual Studio Community 2022
Visual Basic (WPFアプリケーション)
動作環境
.NET Framework 4.8
形態種別
フリーソフトウェア(ソース同梱)

画面写真

主ウィンドウ
主ウィンドウ

ダウンロード

banho.zip(配布ファイル更新日:2025年01月27日)
収録内容
名前バージョン概容
ソース
banho ソースフォルダ
アプリケーション
banho.exe 1.0.3.0 実行ファイル
クラス ライブラリ
Microsoft.WindowsAPICodePack.dll 1.1.0.0 フォルダ選択ダイアログ用
Microsoft.WindowsAPICodePack.Shell.dll 1.1.0.0
Microsoft.WindowsAPICodePack.ShellExtensions.dll 1.1.0.0
ドキュメント
Readme.txt 説明文(本文)

概要

フォルダ内に置かれたメディアファイル(動画や音声等)を、順番に再生するアプリケーションです。

注意

作者自身の使用方法に特化した設計になっているので、一般的な用途には本作ではなく名のあるメディアプレイヤの使用を強くお薦めします。

インストール・アンインストール・アップデート

動作には、.NET Framework 4.8が必要です。未導入なら準備しておいてください。

インストールは、ダウンロードした圧縮ファイルを適当なフォルダに適当な方法で解凍するだけです。

アンインストールは、インストール先フォルダを丸ごと削除するだけです。
本作は、ファイルを生成しませんし、レジストリも使用しません。

アップデートは、全てのファイルを上書きしてください。

使い方

ウィンドウの左側に『メディア コンソール』が、上側に『操作コンソール』があります。

メディア コンソールで、フォルダまたはファイルを開き(ドラッグ&ドロップも可)、表示された一覧から視聴したいファイルを選択し、操作コンソールで再生するだけです。
一覧(ソート時)で『応答なし』になるようなら、起動オプションでソート方法を自然順以外に設定してください。

ウィンドウの×ボタンをクリックするか、Escキーを連打すれば終了します。

対応フォーマットはMicrosoft Windows Media Player 10に準拠しますが、未検証のため動作保証はできません。
メディア コンソールに表示されるファイル一覧は、拡張子でふるいにかけているだけなので、表示されているからといって再生できるとは限りません。もし、再生されなければ次へスキップしてください。

起動オプション

-exselection
動作Ctrl, Shiftキーを用いたファイル選択モードを有効にする。
-fullscreen
動作全画面モードで起動する。
-height=n
動作ウィンドウの縦幅を指定する。※画面の解像度を考慮しません。
nピクセル数 (Double)
-left=n
動作ウィンドウの左端位置を指定する。※画面の解像度を考慮しません。
nピクセル数 (Double)
-nonrobot
動作再生/一時停止/停止操作に伴うメディア コンソールの自動開閉を無効にする。
-peek
動作不可視ファイルの表示を有効にする。
-sort=n
動作ソート方法を指定する。
n0=辞書順 / 1=自然順 / それ以外=何もしない (Integer)
-speed=n
動作起動時の再生速度を指定する。
n0.5~2.0 (Double)
-top=n
動作ウィンドウの上端位置を指定する。※画面の解像度を考慮しません。
nピクセル数 (Double)
-volume=n
動作起動時の音量を指定する。
n0.0~1.0 (Double) ※負数なら消音になる。
-width=n
動作ウィンドウの横幅を指定する。※画面の解像度を考慮しません。
nピクセル数 (Double)

起動パラメータ

コマンドライン引数としてフォルダやファイルのパスを記述したり、アイコンにフォルダやファイルをドラッグしたりできます。
複数のフォルダやファイルを与えた場合は、最初に得られたパスのフォルダが展開されます。展開したパス外のフォルダやファイルは無視されます。

ソリューションについて

ソース

配布物にソースを添付しています。不要なら削除してもらって構いません。

ソースを使用する上での注意

ソースフォルダに".vs", "obj", "bin"フォルダを含めていません。このため、Visual Studioでソリューション(*.sln)を開くと幾つかの影響が現れます。
ソリューションを開いたら、とりあえずビルドしてください。"obj"フォルダが生成され、デザイナが使えるようになります。
コードエディタにおいて、Windowへの参照箇所でエラーが発せられるかもしれません。当該コードと対をなすデザイン(XAMLファイル)を上書き保存すると解消されるようです。

フォルダ選択ダイアログの問題

WPFにはフォルダ選択ダイアログが提供されていません。
そこで、WPFが標準で持つファイル選択ダイアログ"Microsoft.Win32.OpenFileDialog"で何とかしようとしたり、Windows Formsの"FolderBrowserDialog"に出張ってもらおうとしたり、試行錯誤してみましたが不都合を隠蔽に至らず挫折しました。
こうなると、フォルダ選択は諦めて、代わりにWPF標準ファイル選択ダイアログで全選択してもらおうという誘惑に駆られましたが、手間を考えるとそこは譲れない。
結局、NuGetから"WindowsAPICodePack-Core"(v1.1.0.2/Microsoft)と"WindowsAPICodePack-Shell"(v1.1.0/Microsoft)を拝借しましたが、ライセンスや使用方法など不明確な上に、アプリ規模とDLL規模の不相応さで、消化不良感が拭えません。この辺は本当に何とかして欲しかったです、マイクロソフトさん。

コンテキストメニューの問題

本作では、ボタン・メニュー・アクセラレータキーで動作を共有するため、コマンドという機能を使って実装しています。
これが仇となったのか、起動直後のコンテキストメニューがなぜか機能しません。また、稀な場面で各ボタンの有効無効切り替えが上手く行かないことがあります。
フォルダを開いたりウィンドウをクリックしたりすれば正常に戻るようで、何か上手く行くお作法がある気もするのですが、現状ではその糸口すらつかめないままです。

ファイル一覧のソート問題

メディア コンソールでのファイル一覧は、Windowsのエクスプローラの名前順(レジストリを書き換えてモード変更を行っていない場合)と同じ順番になっていると思います。
しかし、順序判定に用いているAPI"StrCmpLogicalW"は推移的(『A>B 且つ B>C なら Cは最小である』と推定するってこと?)ではないらしく、ソース次第では無限ループに陥る(『A>B 且つ B>C 且つ C>A』が成り立ってしまうってこと?)ようで、おっかなびっくりの実装です。
もし、『応答なし』になってしまうようなら、起動オプションで自然順以外を指定してください。

その他

UIを目立たなくするために背景色を黒くしたことで、フォーカスを示す枠線が見えません。このため、[Tab]キー等のフォーカス遷移操作は実用に耐えません。

制作後記

いつの間にかフォルダに溜まっている、中身を忘れたメディアファイル達。はたまた、お気に入りで何度も何度も再生しちゃうメディアファイル達。そんなファイル達を、手軽に、フォルダ丸ごと、次々と、順繰りに、再生できたなら…。
昔はFlashを利用する超軽量プレイヤが存在していて気軽に再生できたけど、今は撲滅されてしまった。
素直にOSに付属するプレイヤや巷にあふれる著名プレイヤを使えば良いのだけれど、自分の望みを叶えてくれるものを探すのは億劫だし、高機能過ぎるのも手に余る。

幸いWPFには"MediaElement"というコントロールが用意されていて、かねてから気になる存在だった。これは、ちょうどいい機会。サクッと自作しよう。

そうして夢想した私欲にまみれた要求仕様

等々…
は、一通り形になった。実際に運用しながらブラッシュアップもした。
ところが、前項で挙げたように細かい所でご機嫌斜めな挙動が残っている。だからと言って、致命的な訳でもない。自分にとっては十分便利なほどの完成度には達したと思う。
されども、WMPベースでは再生できない形式があるし、追加コーデックを探すのもなかなかに大変だ。そもそも、そんなコーデックが存在するのかさえ分からない。
はてさて、自作と他作、どちらが幸せにしてくれるのか。あぁスッキリしない。いや、両方使えば良いのだよ。

コマンドラインで使用するオプションを作る時にいつも迷うのが、『/~』にするか『-~』にするか問題。
『/~』の方が馴染みがあるけど、パスのフォルダ区切りに"/"を使えるみたいだし、最近は『-~』が多いような感じだし。
どうも、"/"はMS-DOS流で、"-"はUnix流らしくて、最近は後者が主流らしい。ということで、今回は『-~』にしてみました。

参考・引用文献/拝借物

毎度、お世話になっております。大変有難く存じます。

リファレンス/サンプル

ツール

.NET Framework