program minfo; { メディアプレーヤー。 DirectShowを利用しメディアチェック用を意識して作成。 ※課題 ・ギャップレス再生。 ・タグ情報の一覧表示。 ・ライブラリ用のsqlite3.dllがたまにエラーを吐く不具合の改善。  ライブラリから読み込む時に別スレッドを作って操作しているのだけれどその扱いが良  くないのだろう。  なので別スレッドではなく別プログラムとして立ち上げてしまった方が良いのかもしれ  ない。  2011-09-14に文字列データ中に#0が含まれるとエラーが出ることへ対処した。  もしかしたらそれが原因だったのかもしれない。 ・リストをStringGridからListBoxに戻した方が良いか。 ・ファイル操作(移動やリネーム)の後に元のファイルのライブラリ情報を更新。 ・プロパティウィンドウで書き込めないタグ情報をライブラリ側に持たせる。 ・ライブラリのファイル名指定。 ・mp3infpのUnicode版利用。 ・ビデオの変わり目にちらつくのを解消。  CheaPlayerではそのような現象はないのでできるはず。 2012-06-20:Ver 0.17.36.225 ・ビデオ映像のキャプチャユニットのアップデートによるリリース。 2012-05-26:Ver 0.17.35.225 ・ビデオレンダラの選択後レジューム位置が0に戻ってしまうことがあった不具合を修正。 ・VMR9で「アスペクト比の保持」のチェックが外れていてもアスペクト比が保持されたま  まになっていた不具合を修正。 2012-05-17:Ver 0.17.34.224 ・Windows 7でビデオオーバーレイが使えない状態でビデオウィンドウが現れてしまう不具  合を修正。 2012-05-12:Ver 0.17.33.218 Windows 7でメディアの長さと大きさの取得にIMediaDetインターフェースを利用していた ことによる以下の三点の不具合を修正。 Windows 7ではメディアディテクタの利用は控えたほうが良いのだろうか。 ・「タグ取得」をオンからオフにするとデッドロックしてしまう不具合を修正。 ・「タグ取得」がオンになっている状態でリストのファイルを「ファイル操作」で「ごみ  箱」へ送ろうとするとデッドロックしてしまう不具合を修正。 ・リストのファイル情報を表示させるとメモリリークしていた不具合を修正。 ・再生できないファイルのダイアログで「いいえ」を選び次のファイルを再生した場合に  再生中のファイルのリストのインデックスが更新されない不具合を修正。 2012-04-21:Ver 0.17.32.215 ・ファイルの履歴に同じファイル名が重複してしまう不具合を修正。 ・Windows 7での以下の不具合を修正。  ・壁紙ビデオにならない不具合を修正。  ・マルチモニター環境でフルスクリーン表示がうまくいかない場合があった不具合を修正。  ・mp4ファイルの静止画の取得ができなかった不具合を修正。   ただしffdshowが必須。   更にffdshow_rev3771_20110307_clsid.exe以降だとうまくいかない。   ffdshow_rev3760_20110218_clsid.exe以前のものである必要あり。 2012-03-18:Ver 0.17.31.213 ・リストウィンドウで再生中のファイルに対して「ファイル操作」の「名前の変更」を行っ  た後、再生が継続されなかった不具合を修正。 2012-02-29:Ver 0.17.30.213 ・「アスペクト比に合わせて開く」のチェックをオンにした場合ビデオの再生で情報表示  パネルがツールバーのすぐ下に表示されてしまう不具合を修正。 2012-02-26:Ver 0.17.29.213 ・リストに何もない時にリストウィンドウを表示させるとタイトル行が重複して表示され  てしまう不具合を修正。 ・リストウィンドウでソート後に表示行が一つ上がってしまう不具合を修正。 ・リストウィンドウで「送る」が機能していなかった不具合を修正。 ・「壁紙ビデオ」機能を復活。 2012-02-06:Ver 0.17.28.213 ・「ファイル操作」の「名前の変更」で拡張子を変更する場合のメッセージが出ていなかっ  た不具合と再生中のファイルの場合頭から再生してしまう不具合を修正。 2012-02-01:Ver 0.17.27.213 ・リストウィンドウの送るメニューが使用不能になっていた不具合を修正。 2012-01-28:Ver 0.17.26.213 ・リストのソートで「場所」を選択した場合昇順で期待通りの並びにならないことがある  不具合を修正。 2011-11-14:Ver 0.17.25.210 ・ビデオの静止画キャプチャで方向キーの左右を「再生/フレーム移動」からキャプチャ  フレームの移動に変更。 2011-11-04:Ver 0.17.24.209 ・壁紙ビデオ機能削除。  なんだかもうややこしくなってきたので。 2011-10-10:Ver 0.17.23.207 ・ビデオ映像をキャプチャで開くキャプチャウィンドウの「画像を保存」ができなくなっ  ていた不具合を修正。 2011-10-09:Ver 0.17.22.207 ・シークバーのツールバーを廃止。  その分の補完でコントロールバーのツールバーのツールボタンを増やした。 ・コントロールバーの再生/一時停止ボタンにドロップダウンメニューをセットしていた  ミスを修正。 2011-09-30:Ver 0.17.21.206 ・ツールバーカスタマイズでコマンドリストに余計な区切りが表示される不具合を修正。 ・カスタムダイアログ用のパネルが表示されてしまうことがある不具合を修正。  2011-08-24:Ver 0.17.16.204で直したつもりが直っていなかった。 ・メニューカスタマイズ、ツールバーカスタマイズ、ショートカットカスタマイズにコマ  ンドのヒントを表示するようにした。 2011-09-14:Ver 0.17.20.204 ・タグ中に#0が含まれているとSQLiteでエラーが出ることへ対処。 ・フルスクリーン表示のビデオから音声メディアに移ると情報パネルのトップが0のまま  になっていたため情報パネルの下に黒い帯が出てしまっていた不具合を修正。 ・フルスクリーン、拡大フルスクリーン、壁紙ビデオ表示させていたモニターが削除され  るとフォームが自動で表示されているモニターに移動しない不具合を修正。 ・同じくフルスクリーン、拡大フルスクリーン、壁紙ビデオ表示の時にモニター情報が変  更されると再生が止まってしまう不具合を修正。 ・静止画キャプチャウィンドウと壁紙設定ウィンドウのアップデート。 ・壁紙ビデオをサブモニターで表示させて終了後、レジュームオプションチェックで起動  して再生させてもサブモニターに表示されない不具合を修正。 2011-09-09:Ver 0.17.19.204 ・壁紙設定フォームのアップデートによる更新。 ・静止画キャプチャと壁紙設定のプログラム起動で起動済みなら前面に移動の処理で大文  字と小文字の区別をしていたため起動済みであっても新規に起動してしまうことがあっ  た不具合を修正。 2011-09-03:Ver 0.17.18.204 ・壁紙設定でプライマリモニター以外のモニターの画像がずれてしまう不具合を修正。 2011-09-02:Ver 0.17.17.204 ・壁紙ビデオにする時に現在の壁紙の状態を保って表示するようにした。  壁紙をシミュレートした画像を作り、壁紙ビデオにするモニターだけオーバーレイ色に  塗りつぶして壁紙にセットし「並べて表示」にすることで実現。 2011-08-24:Ver 0.17.16.204 ・休止からの復帰で1曲進んで再生される不具合を修正。 ・「ファイル」の「開く」の操作を行った後にカスタムダイアログ用のパネルが表示され  てしまう不具合を修正。 ・壁紙設定ウィンドウのアップデート。 2011-08-18:Ver 0.17.15.204 ・「ビデオ映像をキャプチャ」の壁紙に設定する機能のアップデートによるバージョン  アップ。 2011-08-14:Ver 0.17.14.204 ・ビデオ映像のキャプチャのUI変更。  5フレームキャプチャした中から選択するようなUI。  もうちょっと本体との連携のあるUIの方が良いかもしれない。 2011-08-09:Ver 0.17.13.203 ・ファイル操作を行う時にタグ情報取得を一時中断するように変更。  ただしコピーの場合は元ファイルに変更はないので中断はしない。  ※移動やリネームの場合ライブラリ情報を変更した方が良い。 2011-08-08:Ver 0.17.12.203 ・VMR7の時にフルスクリーンでアスペクト比の保持ができなくなっていた不具合を修正。 2011-07-29:Ver 0.17.11.201 ・存在しないファイルがあると再生がストップしてしまう不具合を修正。  Openでエラーになったらエラーイベントを起こすようにした。 ・「送る」で存在しないファイルのフォルダを開こうとしても何も起こらなかったのをエ  ラーメッセージを出すようにした。 2011-07-28:Ver 0.17.10.201 ・amazonのmp3を再生できなかった不具合を修正。 ・テストに「DirectXのバージョン表示」と「サウンドデバイスの列挙」と「登録されてい  るフィルタを列挙」を追加。  デフォルトのサウンドレンダラーを作成するためにあれこれやってる時に必要になった  ので。 ・GraphEditファイルの保存と読み込みに対応。  保存は問題ないけれども読み込みは一部機能しないこともあり。  グラフに基づいてただ再生するだけなら(恐らく)問題なし。 ・plsとwplプレイリストを読み込んだ場合アクセス違反が起きる不具合を修正。  リストのアイテムにTMyTagオブジェクトを持たせる処理の対応がm3uとm3u8だけったため。 2011-07-27:Ver 0.17.9.199 ・レジューム再生の再生開始秒数がメディアの再生時間以上だと再生が始まらない不具合  を修正。  再生開始秒数が再生時間以上なら次のメディアの再生へ移るような実装に変更。  また終了時の再生開始秒数の書き込みを小数点以下四捨五入ではなく切り捨てにした。 ・プレイヤーウィンドウで再生中のファイルをリストから削除してからリストを表示させ  るとグリッドの範囲外エラーが起きることがあった不具合を修正。  固定セルを除いたデータセルの範囲選択の書き込みのルーチンが間違っていたことによ  る。 2011-07-26:Ver 0.17.8.197 ・キャプチャ画像を別フォームで表示するように変更。 ・非力なCPUで高解像度のビデオを再生すると映像が遅れることがありキャプチャに支障  をきたすのでキャプチャ用のフレーム移動コマンドを実装。  DirectShowのStep機能を使うのではなくAvgTimePerFrameを現在の時間に足し引きして  移動させる。 2011-07-17:Ver 0.17.7.196 ・プレイヤーのコントロールバーのツールボタンを左側にまとめた。 ・プレイヤーのシークバーとコントロールバーカスタマイズに対応。 ・情報パネルのファイル情報にファイルの更新日を追加。 2011-07-16:Ver 0.17.6.196 ・プレーヤーフォームの情報パネルのマウスイベントが起きていなかった不具合を修正。  TStringGridだとマウスホイールイベントが拾えなかったので廃止。  ラベルに変更。 ・「アスペクト比を保持」をツールバーに追加。 ・プログラム終了時に必ずライブラリの最適化を行っているのをメニューから選択して実  行するようにした。 2011-07-14:Ver 0.17.5.193 ・拡張子を制限していてメディアファイル以外のあるフォルダをリストアップするとメモ  リリークするようになっていた不具合を修正。  2011-07-08の変更で紛れた不具合。 ・「ファイル移動」や「名前をつけてファイル移動」で複数のファイルを一度に移動させ  た後ファイルの場所でソートを行うと移動後のフォルダでソートされないものが出る不  具合を修正。  ソートの比較条件をタグ情報から取得するように変えたのだけれどその更新がうまくいっ  ていなかったため。 ・プロパティフォームを表示できるはずができていなかった不具合を修正。 ・書込み禁止のディスク(CD-Rに焼いりSDカードに保存して書込み禁止にした場合等)で起  動するとライブラリデータベースとビデオ画像のキャプチャでエラーになっていた不具  合を修正。 2011-07-12:Ver 0.17.4.191 ・IBasicVideoでのビデオ画像のキャプチャを現在再生中のレンダラーから取得するのでは  なく新たにフィルタグラフを作って取得するように変更。  その結果VMR9、旧ビデオレンダラ、VMR7の順にキャプチャしてすべて失敗ならIMediaDet  で試みるようにできた。  またキャプチャ時に再生が一瞬止まる副作用もなくなった。  (これはこれで確認の意味で止まってくれた方が良いのかも知れない) ・マウスボタンの中クリックにビデオ画像のキャプチャ機能を割り当て。 ・メインメニューの「ズーム」→「アスペクト比に合わせて開く」のアクションが外れて  いてチェックを入れても効かなかった不具合を修正。 2011-07-10:Ver 0.17.3.189 ・ビデオ画像のキャプチャでデコーダとスプリッタの組み合わせによって失敗するケース  があったのでIBasicVideoとIMediaDetの両方を試すように変更。 ・「テスト」に「メディアディテクタからの情報を取得」機能追加。 ・「ビデオレンダラの選択」を「テスト」メニューから「ズーム」メニューに移動。 2011-07-08:Ver 0.17.2.184 ・タグ取得をライブラリファイルを作ってそちらから取得するように変更。  最初にライブラリを作る時に時間がかかるが一旦作ってしまえばそこそこ早い。  ライブラリの作成にはSQLiteを利用。 ・ファイルサイズや更新日時、作成日時とタグ情報でソートする時にタグ情報の取得が完  了していない場合完了していないタグ情報をソート中に読み込む仕様をえらく時間がか  かってしまうため取りやめ。 完了していないタグ情報は空の情報として取り扱う。 ・実行ファイルを読み込んだ時にSendToフォルダにショートカットを作成する機能を廃止。 フォルダを読み込ませた時に不必要なショートカットが混ざることがあるので取りやめ。 2011-07-02:Ver 0.17.1.180 ・別スレッドでタグ取得中にソートを行うとエラーが出てしまう不具合を修正。 ・起動してすぐに閉じるボタンを押すと一旦非表示になった後すぐ表示され、以降操作を  受け付けなくなる不具合を修正。  送るフォルダーの監視ルーチンをファイル取得中に操作を受け付けなくするルーチンの  中に組み込むことで回避。 2011-07-01:Ver 0.17.0.179 ・タグ情報を別スレッドで取得するようにした。  取得中はリストウィンドウのタイトルバーに進捗状況を表示。 ・タイトルやアーティスト名のタグ情報を元にソートできるようにした。 ・タイトルやアーティスト名を検索できるようにした。 ・リストの検索欄の編集メニューをカスタマイズに追加。 ・リストのポップアップメニューを少し充実させた。 タグ情報を元にソートや検索ができるようになったのでマイナーあげ。 2011-06-30:Ver 0.16.1.172 ・リストのソートメニューをカスタマイズに追加。 ・メニューカスタマイズの読み込みでカスタマイズするメニューを引数で指定しなくても  済むように変更。 ・方向キーのKeyDownイベントが何故か取れないのでキーダウンによる連続入力を取りやめ。 2011-06-29:Ver 0.16.0.172 ・時間表示を詳細表示にすると1秒未満で小数点からの表示(0.123ではなく.123)になって  いた不具合を修正。 ・「テスト」メニューに「シーク能力取得」と「サポートタイムフォーマット」を追加。 ・旧ビデオレンダラを選択した時にアスペクト比の保持ができなかった不具合を修正。 ・「ビデオ画像をコピー」機能実装。 ビデオ画像のキャプチャができるようになったのでマイナーあげ。 2011-06-27:Ver 0.15.5.168 ・「ファイル操作」の「移動」の後再生が始まらなかった不具合を修正。 ・曲の変わり目にタスクバーのアイコンがフラッシュしてしまう不具合を修正。 ・ビデオレンダラの選択を何度かやっているとメニューのチェック状態がおかしくなって  いた不具合を修正。 メニューに適用していたアクションのGroupeIndexを設定していなかったため。 ・ファイル操作のファイルコピーの動作がおかしかった不具合を修正。 2011-06-23:Ver 0.15.4.168 ・ファイルサイズ、更新日時、タグでのソートに対応。 2011-06-20:Ver 0.15.3.166 ・メディアイベントの解放時にメディアイベントインターフェースがnilになっていること  がありエラーになって処理が止まることがあった不具合を修正。  ちょっと変な実装になっているのでこれでいいのかどうか疑問あり。 ・ビデオのサイズ表示にオリジナルサイズを表示するようにした。 2011-05-21:Ver 0.15.2.166 ・リストの最後に再生できないファイルがあるとそれを削除した後ずっと無名のファイル  を再生できないというダイアログが出続けてしまう不具合を修正。 2011-05-10:Ver 0.15.1.166 ・TScreenのMonitorプロパティがモニター情報の変更に追随しないことからモニター情報  が変わった後にツールバーのドロップダウンメニューを表示させようとするとアクセス  違反のエラーが出てしまっていた不具合を修正。 2011-04-21:Ver 0.15.0.165 ・フレーム再生(コマ送り)に対応。 ・一時停止から再生を開始すると曲の頭に戻ってしまう不具合を修正。 ・一時停止時にリプレイを行っても再生が始まらなかった不具合を修正。 コマ送りができるようになったのでマイナーバージョンアップ 2011-04-20:Ver 0.14.16.164 ・マイナス位置にあるモニター上でファイルのダイアログを表示させようとするとエラー  になっていた不具合を修正。 ・マイナス位置にあるモニター上でファイルのダイアログを表示させるとそのモニターで  はなくプライマリモニターにダイアログが表示されてしまう不具合を修正。  LParamを通してダイアログ初期化時のマウス位置を取得していたのをやめて表示のイベ  ント内で現在のマウス位置を取得することで回避。 2011-04-16:Ver 0.14.15.164 ・壁紙ビデオの時に最小化するとメインフォームのフォーカスを受け付けなくなる不具合  を解消。  プレーヤーコンポーネントをデスクトップの子ウィンドウにしていたのをビデオウィン  ドウのみデスクトップの子ウィンドウにすることで回避。 2011-04-08:Ver 0.14.14.164 ・マルチモニター環境でマイナスの位置にモニターがあると壁紙ビデオがうまく表示され  ない不具合を修正。 2011-03-31:Ver 0.14.13.164 ・リストの部分ソートに対応。 ・Unicodeの変換ライブラリのアップデートにより少し高速化。 ・ツールバーに「拡張子を限定」を追加。 ・「ファイル操作」の「ゴミ箱へ」で存在しないファイルを指定するとエラーになる不具  合を修正。 2011-03-28:Ver 0.14.12.162 ・リスト取得をキャンセルした場合のリストを取得前の状態に元に戻す機能をライブラリ  レベルで削除。  リストが数万件になると更新に時間がかかってしまうため。 ・壁紙ビデオで並べて表示でない場合モニターの解像度が違うと余白ができてしまってい  た不具合を修正。 2011-03-17:Ver 0.14.11.160 ・リストに同名のファイルが並ぶと「次へ」で同じファイルを再生しつづけてしまう不具  合を修正。  Playの処理でインデックスによらずファイル名でOpenしており、Openでは引数で与えら  れたファイル名をリストの頭から順に検索していき最初にヒットしたインデックスを現  在のインデックスにセットするという処理にしていたため。 2011-03-15:Ver 0.14.10.160 ・「ファイル操作」の移動とコピーのメッセージにファイル名を表示するようにした。 2011-03-10:Ver 0.14.9.159 ・リストからリネーム、名前をつけて移動、移動を行った後再生が始まらなくなっていた  不具合を修正。 ・プレイヤーから名前をつけて移動、移動を行った後次のファイルを再生していたのをや  めて再生していたファイルをレジューム再生するように変更。 2011-03-09:Ver 0.14.8.159 ・「送る」のアイコン表示復活。  myMenu.pasの不備のアップデートによる。 2011-03-04:Ver 0.14.7.159 ・ポップアップメニューの「ファイル」をダブルクリックしてリスト表示させた時にマウ  スの位置がプレイヤー上にあるとプレイヤーがアクティブになりリストより前面に出て  しまう不具合を修正。  リスト表示ルーチンの中でプレイヤーのメッセージドレインをFalseにし、プレイヤー  フォームがアクティブになった時に元に戻すことで回避。 結構力技。 2011-02-15:Ver 0.14.6.159 ・プレイリストから再生中のファイルをゴミ箱へ移動させるとフォーカスエラーが起きて  しまう不具合を修正。 ・フルスクリーンにした時ツールバーやコントロールバーの操作ができない不具合を修正。 ・リピートの設定を保存しないように仕様を変更。 2011-02-10:Ver 0.14.5.159 ・起動中にシステムを終了させたりログオフさせたりした場合設定を保存できなくなって  いた不具合を修正。 2011-02-08:Ver 0.14.4.159 ・相対パスでリストを書き出した場合うまくいかない不具合を修正。 ・存在しないファイルの書かれたプレイリストを読み込んだ場合リストに空欄が出来てし  まう不具合を修正。 2011-02-07:Ver 0.14.3.159 ・「送る」機能が機能しなくなっていた不具合を修正。 2011-01-31:Ver 0.14.2.159 ・情報表示欄のファイル名をフルパスで表示するように変更。 ・「ファイル操作」の「ファイル移動」の後次のファイルを再生しなかった不具合を修正。 ・「選択フォルダのみ開く」でフォルダを開くとフォルダ中のファイルが「開く」の履歴  に登録されてしまう不具合を修正。 ・リストからファイルをを削除すると現在再生中のファイルの表示がずれる不具合を修正。 2011-01-21:Ver 0.14.1.159 ・DLLプリロード攻撃対策。 2010-11-27:Ver 0.14.0.154 ・WindowsMediaPlayerコンポーネント利用からDirectShowを利用して再生するように変更。  DirectShowの学習も兼ねて。 ・DirectShow移行に伴い今までできていたことができなくなってしまっている機能がちょ  こちょこ存在。 ・現時点でフレーム再生がNG。 ・ギャップレス再生もNG。 ・wmaとwmvファイルの再生速度変更もNG。  逆にmp4やflvなどの再生速度変更はできるようになった。  また0.5倍未満でも音が出るようになった。 ・ビデオのアスペクト比の変更が可能になった。 ・情報表示が少し詳細に。  これ以前の履歴はhistory.txtへ。 } (* {$IFDEF DEBUG} HeapChecker, myDebug, {$ELSE} FastMM4, {$ENDIF} my_safedll, Windows, myWindow, Forms, SysUtils, myApp, myFile, myMessageBox, myParam, myWindowsMediaPlayer, myWStrings, myBmpCaptureEx in '..\..\lib\myBmpCaptureEx.pas' {App_TOOLBmpCaptureEx}, myMediaProperty in '..\..\lib\myMediaProperty.pas' {App_MediaProperty}, info_get in 'info_get.pas', info_update in 'info_update.pas', libman in 'libman.pas', main in 'main.pas' {App_MEDIAPlayer}, list in 'list.pas' {App_MEDIAPlaylist}, sub in 'sub.pas' {App_CheaPlayerWallForm}, custom_base in 'custom_base.pas' {App_CustomBaseForm}, custom_menu in '..\custom\custom_menu.pas' {App_CustomMenu}, custom_toolbar in '..\custom\custom_toolbar.pas' {App_CustomToolBar}, custom_shortcut in '..\custom\custom_shortcut.pas' {App_CustomShortCut}, custom_help in '..\custom\custom_help.pas' {App_CustomVersionInfo}; *) //{$DEFINE DEBUG} uses {$IFDEF DEBUG} HeapChecker, myDebug, {$ELSE} FastMM4, {$ENDIF} my_safedll, Windows, myWindow, Forms, SysUtils, myApp, myFile, myMessageBox, myParam, myWindowsMediaPlayer, myWStrings, myBmpCaptureEx in '..\..\lib\myBmpCaptureEx.pas' {App_TOOLBmpCaptureEx}, myMediaProperty in '..\..\lib\myMediaProperty.pas' {App_MediaProperty}, info_get in 'info_get.pas', info_update in 'info_update.pas', libman in 'libman.pas', main in 'main.pas' {App_MEDIAPlayer}, list in 'list.pas' {App_MEDIAPlaylist}, sub in 'sub.pas' {App_CheaPlayerWallForm}, custom_base in 'custom_base.pas' {App_CustomBaseForm}, custom_menu in '..\custom\custom_menu.pas' {App_CustomMenu}, custom_toolbar in '..\custom\custom_toolbar.pas' {App_CustomToolBar}, custom_shortcut in '..\custom\custom_shortcut.pas' {App_CustomShortCut}, custom_help in '..\custom\custom_help.pas' {App_CustomVersionInfo}; {$R *.res} //プロパティ用 var lbExists : Boolean; lsFileName : WideString; lhHandle : HWND; function l_EnumWindowProc(hHandle: HWND; pData: Pointer): BOOL; stdcall; var l_Text: WideString; begin Result := True; if (IsIconic(GetWindow(hHandle, GW_OWNER))) or (IsWindowVisible(hHandle)) then begin if (gfnsClassNameGet(hHandle) = 'TApp_MediaProperty') then begin l_Text := gfnsUtf7ToWide(gfnsWindowTextGet(FindWindowEx(hHandle, 0, 'TMyStaticText', nil))); if (l_Text = lsFileName) and (gfnsExeNameGet(hHandle) = gfnsExeNameGet) then begin lbExists := True; lhHandle := hHandle; Result := False; end; end; end; end; var lh_Owner: HWND; begin {$IFDEF DEBUG} HeapChecker.OutputClassName := True; HeapChecker.DumpLeakMemory := True; // myDebug.gpcExeMode; {$ENDIF} Application.Initialize; Application.Title := 'minfo'; if (ParamW.OptionExists('property')) then begin //プロパティを起動 lbExists := False; lsFileName := ParamW.UnOptStr[1]; if not(gfnbFileExists(lsFileName)) then begin gpcMessageBox(WideFormat('%s'#13'ファイルが存在しません', [lsFileName]), G_csAPPTITLE); Exit; end; EnumWindows(@l_EnumWindowProc, 0); if (lbExists) then begin lh_Owner := GetWindow(lhHandle, GW_OWNER); if (IsIconic(lh_Owner)) then begin gpcIconRestore(lh_Owner); end; SetWindowPos(lh_Owner, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); SetWindowPos(lh_Owner, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); Exit; end; Application.CreateForm(TApp_MediaProperty, App_MediaProperty); end else if (ParamW.OptionExists('subplayer')) then begin //壁紙ビデオ用フォームを起動。 SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW ); Application.ShowMainForm := False; Application.CreateForm(TApp_MEDIAPlayerSubForm, App_MEDIAPlayerSubForm); end else begin //本体を起動 main.G_sAllowDuplication := gfnsFilePathGet(gfnsExeNameGet) + 'allow.duplication'; if not(gfnbFileExists(G_sAllowDuplication)) //二重起動を許可 then begin if (gfnbAppDuplicate(main.G_csAPPMUTEXNAME, 'TApp_MEDIAPlayer', main.G_csAPPTITLE)) then begin Exit; end; end; Application.CreateForm(TApp_MEDIAPlayer, App_MEDIAPlayer); end; Application.Run; end.