掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TWindowsMediaPlayerで個々のファイルを連続再生させるには (ID:33653)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
真琴:「ハルコさん、ややこしくて次の動画が始まらない原因が分かりにくいよね?」 春子:「そうかな?」 真琴:「えっ? ハルコさんは原因が分かったの?」 春子:「マコト、ログをヨク見てごらん、止まる時は"MediaEnded"のイベントを抜ける前に次のURLのセットやPlayコマンドがあるよ」 真琴:「う〜ん…、あ、そういえばそうなってる…」 春子:「次の動画が始まる場合には、そのイベントを抜けた後に Playコマンドがあるでしょ?」 真琴:「分かったよ、ハルコさん、Playコマンドを少し遅らせればイイんじゃない?」 春子:「まぁ、そうだけど、どうやって遅らせればイイと思う?」 真琴:「Sleep()とかじゃダメ?」 春子:「MoviePlay関数の中にSleepを入れても、それは"MediaEnded"のイベントの中よ、いくら待ってもイベントからは抜けないって」 真琴:「あ、そういうコトかぁ…、じゃぁどうすればイイの?」 春子:「もし止まった時でもPlayボタンを押せばスタートするよね? だから…」 ........... private procedure WindowsMediaPlayer1PlayStateChange(Sender: TObject; NewState: Integer); procedure AppMessage(var Msg: TMessage); message WM_APP; ........... var PlayListNo: Integer; procedure TForm1.AppMessage(var Msg: TMessage); begin Memo1.Lines.Add('AppMessage-SetURL-in'); //if PlayListNo < ListBox1.Items.Count-1 then Inc(PlayListNo) else PlayListNo := 0; TWindowsMediaPlayer(Msg.WPARAM).URL := ListBox1.Items[PlayListNo]; //TWindowsMediaPlayer(Msg.WPARAM).Controls.Play; Memo1.Lines.Add('AppMessage-SetURL-out'); end; procedure TForm1.WindowsMediaPlayer1PlayStateChange(Sender: TObject; NewState: Integer); const PLAY_STATE_STR: array[0..10] of string = ('Undefined', 'Stopped','Paused','Playing','ScanForward','ScanReverse', 'Buffering','Waiting','MediaEnded','Transitioning','Ready'); var s: string; begin if Application.Terminated then exit; if (Low(PLAY_STATE_STR) <= NewState) and (NewState <= High(PLAY_STATE_STR)) then s := PLAY_STATE_STR[NewState]; Memo1.Lines.Add('●'+ s); case NewState of // wmppsMediaEnded: wmppsStopped: begin Memo1.Lines.Add('PlayStateChange['+ s +']-PostMessage-in'); if PlayListNo < ListBox1.Items.Count-1 then Inc(PlayListNo) else PlayListNo := 0; PostMessage(Handle, WM_APP, WPARAM(TWindowsMediaPlayer(Sender)), 0); Memo1.Lines.Add('PlayStateChange['+ s +']-PostMessage-out'); end; wmppsReady: begin Memo1.Lines.Add('PlayStateChange['+ s +']-PostMessage-in'); if (Assigned(TWindowsMediaPlayer(Sender).currentMedia)) then begin PostMessage(Handle, WM_APP, WPARAM(TWindowsMediaPlayer(Sender)), 0); end; Memo1.Lines.Add('PlayStateChange['+ s +']-PostMessage-out'); end; end; end; 真琴:「あ、ナルホド〜…Messageなの…」 春子:「そぅ、この場合は PostMessageよ」 真琴:「aviやflvの動画はこれでOKね、でも、movやCDでも大丈夫かなぁ…ないから確認できないし」 春子:「質問者とはPCの環境も違うから、コレでウマクいくかは"当たるも八卦"ってトコかな?」 真琴:「ハズレもある?」 春子:「あるかもよ、なにしろ昨日の相撲で日馬富士が負けちゃったから」 真琴:「…、ハルコさん、それって、コレとどんなカンケイ?」
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.