program cheaplayer; { 普段使い用の機能限定メディアプレイヤー。 ローテクTipsのDirectShowで再生のサンプルプログラムを基に肉付け。 http://drang.s4.xrea.com/program/tips/dshow/dshow_play_1.html ※課題 ・プレイリストのアイテムの移動。 ・ツールバーやメニューなどのカスタマイズ。 ・minfoの代替ができるように。 2013-05-21:Ver 1.3.21.79 ・メインウィンドウのコンボボックスリスト復活。 ・リストの選択状態が曲の変わり目で解除されてしまう不具合を修正。 ・リストの選択ファイルの削除のメッセージを丁寧なものにした。 ・リストの選択ファイルの削除で削除の途中で次の曲に移動することがあったのを削除が  終わってから次へ移動するようにした。  削除が終わる前に移動すると移動後に再び削除の対象になってしまい処理に時間がかかっ  てしまうことがあるため。 ・フルスクリーン状態でシークバーを表示させてシーク移動した後にすぐにシークバーを  非表示にしていたのを表示し続けるように変更。 ・デバッグオプション追加。 ・静止画を表示するオプション追加。 ・ビデオウィンドウを掴んで移動できるように調整。  Windows 7でビデオウィンドウを掴んだ瞬間、何故か右下方向へずれてしまっていたため  掴んで移動機能をオフにしていたものを自力で移動させることで解決。  ただしWindowsのオプションでウィンドウを表示したまま移動のオプションをオフにして  いてもウィンドウを表示したまま移動になってしまう。 2012-06-20:Ver 1.3.20.62 ・ビデオ映像のキャプチャユニットのアップデートによるリリース。 2012-06-08:Ver 1.3.19.59 ・ボリュームを実装。  コントロールバーからスキップとバックスキップボタンを削除。 2012-05-21:Ver 1.3.18.59 ・リストフォームからファイル操作を行うとプレーヤーフォームがアクティブになってし  まう不具合を修正。 ・「ファイル操作」の「ファイル名変更」と「ファイルの移動」を行った後にソートマー  カーを消すようにした。 2012-05-12:Ver 1.3.17.51 ・リストから選んだファイルの静止画キャプチャが起動しなかった不具合を修正。 ・静止画キャプチャでサンプルグラバの接続がうまくいかなかった場合タイマーを使って  キャプチャするようにした。 2012-04-21:Ver 1.3.16.46 ・Windows 7での以下の不具合を修正。  ・壁紙ビデオでエラーになっていた不具合を修正。  ・壁紙ビデオにならない不具合を修正。   ただしプログラム起動時にエアロ効果がオフになる。  ・マルチモニター環境でフルスクリーン表示がうまくいかない場合があった不具合を修正。  ・mp4ファイルの静止画の取得ができなかった不具合を修正。   ただしffdshow必須。   更にffdshow_rev3771_20110307_clsid.exe以降だとうまくいかない。   ffdshow_rev3760_20110218_clsid.exe以前のものである必要あり。   ※ffdshowの設定によって回避できることが判明。    「オーバーレイ」の「出力」の「サポートされた出力色空間」の「RGB」の項目の    うち「RGB24」にチェックを入れること。 2012-02-29:Ver 1.3.15.45 ・「大きいアイコン」のチェックをオンからオフにするとプレイリストウィンドウのアイ  コンのサイズが元に戻らない不具合を修正。 ・不具合を修正したものの「大きいアイコン」オプションを削除。 2012-02-26:Ver 1.3.14.45 ・フォルダのドラッグアンドドロップでファイルを取得できていなかった不具合を修正。 2012-02-09:Ver 1.3.13.45 ・壁紙ビデオで再生中にモニターを移動してもオーバーレイ用の壁紙を再作成していなかっ  たためきちんと表示できていなかった不具合を修正。 2012-02-01:Ver 1.3.12.45 ・壁紙ビデオがプライマリモニター以外に表示できなくなっていた不具合を修正。 2012-01-28:Ver 1.3.11.45 ・リストのソートで「場所」を選択した場合昇順で期待通りの並びにならないことがある  不具合を修正。 ・ツールバーにリスト編集ボタンを追加。 ・壁紙ビデオ用のサブウィンドウのアイコンがタスクバーに表示されてしまうことがある  不具合を修正。 2012-01-16:Ver 1.3.10.39 ・ファイル操作の「ごみ箱へ」が選択ファイルではなく再生中のファイルを削除してしま  う不具合を修正。  削除の確認ダイアログが出た後に曲が変わった場合に不具合が起きていた。 2012-01-05:Ver 1.3.9.39 ・リストをクリアした後フルスクリーンや壁紙ビデオ状態であったら通常のウィンドウ状  態に戻すように変更。 2011-12-18:Ver 1.3.8.39 ・ミュートがシーク移動や曲移動の度に解除されてしまう不具合を修正。 ・リストにファイルがあってもメディアの再生ができないとファイル操作や曲の移動が出  来ない不具合を修正。 2011-12-09:Ver 1.3.7.39 ・拡張子のカスタマイズに対応。 ・リストウィンドウの検索エディットボックスで「c」と「z」が入力できなかった不具合  を修正。 2011-12-01:Ver 1.3.6.39 ・「送る」フォルダの内容が変わった時にタスクバーのメニューを再作成するようにした。 ・暫定で「大きいアイコン」オプション実装。  大きいアイコンが32×32ピクセルなので大きすぎな気もするけれど。 2011-11-21:Ver 1.3.5.35 ・上部と下部のパネルにヒントを設定。  上部パネルにはメディアのファイル名。  下部パネルにはメディア情報(タイトル/アルバム/アーティスト) 2011-11-16:Ver 1.3.4.30 ・開くの履歴で同じファイルやフォルダが続いた場合まとめて表示するはずがそうなって  いなかった不具合を修正。 ・「ファイル操作」のメニューに不要なアイコンが表示されていた不具合を修正。  でも表示された方が楽しいかもしれない。 ・「ファイル操作」の内容を少々手直し。  エラーの対処を若干丁寧にした。 ・「ファイル操作」のダイアログの初期フォルダを設定ファイルに保存するようにした。 ・プレイリストウィンドウに「ファイル操作」メニュー実装。 ・「送る」の「プログラムの登録」が出来なくなっていた不具合を修正。 ・「送る」のダイアログの初期フォルダを設定ファイルに保存するようにした。 ・[Shift]+「フォルダを開く」で選択フォルダ内のファイルのみをリストアップするよう  にした。  つまりサブフォルダのファイルを含めないでリストアップする。 2011-11-14:Ver 1.3.3.30 ・壁紙ビデオから戻した後にビデオの表示がプレイヤーウィンドウの大きさに追従しなかっ  た不具合を修正。 ・サブウィンドウの存在をタイマーでチェックしていたのを廃止。  サブウィンドウ作成時に作成が終わるまで待機するようにしたので必要なくなった。 ・ビデオの静止画キャプチャ機能を実装。  時間指定を行いたかったので。 2011-11-12:Ver 1.3.2.23 ・ショートカットへのドラッグアンドドロップへ対応。 2011-11-10:Ver 1.3.1.23 ・Unicodeな名前のあるファイルの再生ができなかった不具合を修正。  Unicode非対応な関数が紛れていたため。 ・プレイリストウィンドウにツールバーをつけた。 ・プレイリストウィンドウに検索ボックスをつけた。 ・プレイリストにリストの番号を表示するようにした。 ・プレイヤーウィンドウのプレイリストコンボボックスのリストの番号を0からではなく1  から始めるようにした。 ・プレイリストのソートを実装。 ・起動時プレイヤーウィンドウのフォーカスが失われてしまう不具合を修正。  サブウィンドウを起動するとそちらにフォーカスを取られてしまっていたのが原因。  サブウィンドウ側でプレイヤーウィンドウにSetForegroundWindowすることで解決。  本来ならサブウィンドウの起動を待ってプレイヤーウィンドウ側で解決するのが筋とは  思うのだけれども。 2011-11-09:Ver 1.3.0.18 ・本体のプレイリストコンボボックスの表示のオン・オフでビデオ表示画面が追従しなく  なっていた不具合を修正。 ・プレイリストを別ウィンドウで表示するようにした。  エディタで編集できるようにクリップボードへのコピーと貼り付けを実装していたもの  の、やはりエディタではやりづらかったので。  minfoや壁紙ビデオと違いTStringGridではなくListBoxを使用しているのでアイテムの  選択を不連続で行えるメリット。 マイナーバージョンアップ。 2011-11-08:Ver 1.2.3.18 ・コンボボックスにフォーカスがある時にマウスホイールを回しても曲が変わらないよう  にした。  不用意な操作はキャンセルする方向で。 2011-11-06:Ver 1.2.2.18 ・フルスクリーン時シークバーとファイルリストに触っただけでパネルが非表示になって  しまう不具合を修正。 ・なんらかの理由でサブフォームが起動中に閉じられてしまった場合へ対処。  1秒間隔でチェックして無くなっていたら再作成するようにした。 ・プログラム終了時にも音声フェードアウトするようにした。 2011-11-03:Ver 1.2.1.18 ・いちいちプレーヤーをサブフォームに移す必要もなく、ビデオウィンドウをサブフォー  ムにするだけでも良いことが判明したので作り変え。  移行時の再生中断がなくなった。  ビデオウィンドウが非表示になっているとタスクバーがフラッシュしてしまうようだ。 ・トラックバーが不必要に移動してしまう不具合を修正。  マウスの右ボタンを押したままホイール操作でスキップする時に処理中はルーチンに入  らないようにして対処。 2011-11-02:Ver 1.2.0.18 ・↓ではうまくいかなかったので壁紙ビデオとビデオメディアで最小化の時にサブフォー  ムを起動して再生させることで問題を回避。  そのため壁紙ビデオへの移行と復帰、最小化と元のサイズに戻す時に再生が中断してし  まう。 マイナーバージョンアップ。 2011-10-18:Ver 1.1.5.17 ・壁紙ビデオの実装の仕方を改良。  以前のものは曲の変更のたびにデスクトップがちらついてしまっていたため。 ・↑の余波で最小化を実際に最小化するのではなくAlphaBlendをTrueにすることでフォー  ムを透明化するように変更。  壁紙ビデオ時に最小化すると曲の変わり目でタスクバーがフラッシュしてしまうのを防  ぐため。 ・↑の余波でタスクバーのメニューをポップアップメニューに置き換え。 ・音声のフェードイン・フェードアウト機能を実装。 2011-10-17:Ver 1.1.4.16 ・壁紙ビデオ機能実装。  合わせてTMyDirectShowPlayer利用に変更。 2011-10-14:Ver 1.1.3.8 ・リストの表示と非表示を切り替えるとビデオの表示がずれるようになっていた不具合を  修正。  ビデオ表示ウィンドウのサイズ調整を行った後DirectShowでの調整を行っていなかった  ため。  どのバージョンで紛れ込んだんだろう… 2011-10-13:Ver 1.1.2.8 ・タスクバーのプログラムの独自ポップアップメニューのUnicode表示に対応。  結構力技。 2011-10-12:Ver 1.1.1.8 ・「ファイル操作」機能実装。 2011-10-11:Ver 1.1.0.3 ・タスクバーにポップアップメニューを表示できるようにした。  タスクバーに表示させるためにオーナードローが使えないのでUnicodeな表示は不可。 マイナーバージョンアップ。 2011-10-09:Ver 1.0.0.3 ・プログラムランチャー機能の変わりに「送る」機能を実装。  その方が簡単だったので。 ・開くダイアログのフィルターの「すべてのメディア」と「すべて」を自動で付け足すよ  うにした。 ・ファイルを読み込むときに開くダイアログのフィルターに登録してある拡張子のみに限  定してリストアップするようにした。 バージョン番号付与。 2011-10-08: ・マウスの右ボタンを押したままホイール操作で30秒スキップ、30秒戻しを実装。 ・リスト保存時にファイルの上書きの確認メッセージを出すようにした。 2011-10-04: ・専用キーに対応。 ・ズームメニューのアスペクト比関連を充実させた。 ・マウスジェスチャー対応。 2011-10-03: ・ポップアップメニュー実装。 ・リストの保存、コピー、貼り付け実装。 ・アイコンをdboxのものを流用。 ・プロジェクト名をcheaplayerにした。  チープなプレイヤーということで。 2011-10-02: ・ボリューム調整対応。 ・リスト表示のON/OFF対応。 ・メインのツールバー実装。 ・開いたファイル・フォルダの履歴に対応。 ・設定ファイルの読み書きに対応。 ・状況に応じたメニューのEnabledのセット。 2011-10-01: ・Unicode対応。 ・他のウィンドウを触っても解除されないフルスクリーン対応。 ・ランダム再生対応。 } uses FastMM4, my_safedll, Forms, SysUtils, Windows, myParam, main in 'main.pas' {App_CheaPlayer}, list in 'list.pas' {App_CheaPlayerList}, sub in 'sub.pas' {App_CheaPlayerSubForm}; {$R *.res} const F_csOPT_SUBPLAYER = 'SUBPLAYER'; //呼び出したウィンドウのハンドル begin Application.Initialize; if (ParamW.OptionExists(F_csOPT_SUBPLAYER)) then begin //壁紙ビデオ用フォームを起動。 Application.Title := 'CheaPlayer - Blank'; SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW ); Application.ShowMainForm := False; Application.CreateForm(TApp_CheaPlayerSubForm, App_CheaPlayerSubForm); end else begin //本体を起動。 Application.Title := 'CheaPlayer'; Application.CreateForm(TApp_CheaPlayer, App_CheaPlayer); end; Application.Run; end.