- 作品名
- 「
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 | ソースフォルダ | |
アプリケーション | ||
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 | |
動作 | ソート方法を指定する。 |
n | 0=辞書順 / 1=自然順 / それ以外=何もしない (Integer) |
-speed=n | |
動作 | 起動時の再生速度を指定する。 |
n | 0.5~2.0 (Double) |
-top=n | |
動作 | ウィンドウの上端位置を指定する。※画面の解像度を考慮しません。 |
n | ピクセル数 (Double) |
-volume=n | |
動作 | 起動時の音量を指定する。 |
n | 0.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"というコントロールが用意されていて、かねてから気になる存在だった。これは、ちょうどいい機会。サクッと自作しよう。
そうして夢想した私欲にまみれた要求仕様
コマンドラインで使用するオプションを作る時にいつも迷うのが、『/~』にするか『-~』にするか問題。
『/~』の方が馴染みがあるけど、パスのフォルダ区切りに"/"を使えるみたいだし、最近は『-~』が多いような感じだし。
どうも、"/"はMS-DOS流で、"-"はUnix流らしくて、最近は後者が主流らしい。ということで、今回は『-~』にしてみました。
毎度、お世話になっております。大変有難く存じます。