全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2345
推到 Plurk!
推到 Facebook!

關於windows media player 10 物件控制的問題

尚未結案
alanyuan
一般會員


發表:15
回覆:20
積分:7
註冊:2005-07-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-03 17:40:59 IP:61.228.xxx.xxx 未訂閱
請教各位大大: 我想利用windows media player 10 這個ActiveX物件,寫一個連續播放多個.mpg的程式,但我試了許久,仍找不出從那個事件判斷播放完畢,並指定新的URL屬性(檔名),讓它自動播放下一首歌,另外我也希望能手動按下一個按鈕後,讓它自動播下一首,我想播放檔案是用ListBox物件來存放的,請各位高手幫忙,謝謝。
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-03 18:53:50 IP:202.39.xxx.xxx 未訂閱
1.判斷播放完畢的部份參考以下這篇試試: http://delphi.ktop.com.tw/topic.php?topic_id=67039    2.播下一首:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if ListBox1.Items.Count = 0 then Exit;      if ListBox1.ItemIndex = ListBox1.Items.Count - 1 then  
    ListBox1.ItemIndex := 0
  else
    ListBox1.ItemIndex := ListBox1.ItemIndex   1;      WindowsMediaPlayer1.URL := ListBox1.Items[ListBox1.ItemIndex];
  WindowsMediaPlayer1.Controls.Play;
end;
-- hagar.
alanyuan
一般會員


發表:15
回覆:20
積分:7
註冊:2005-07-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-03 19:51:26 IP:61.228.xxx.xxx 未訂閱
謝謝hagar的回覆,手動換下一首的法方沒問題,但是判斷播完(PlayStateChange事件中NewState=8),之後若我指定新的URL屬性(檔名),winodows media player會去連線並試圖播放,但最後還是會回到"就緒"的狀態,就不會繼續播放了,但若我自己按下media player的[play]鍵,它就會播放新的檔案,還是不解這點,但仍然謝謝您的回應,也期望各位高手能提供這個問題的解決方法,謝謝。
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-04 09:58:56 IP:202.39.xxx.xxx 未訂閱
正式的解決方法小弟尚未研究出 小弟用以下的方式解決 用一個 Timer, Interval 設為 3000, Enabled 設為 False 相關程式碼如下:
procedure TForm1.WindowsPlayer1PlayStateChange(Sender: TObject;
  NewState: Integer);
begin
  if NewState = 8 then
    Timer1.Enabled := True; // 啟動 Timer
end;    procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False; // 停止 Timer      if ListBox1.ItemIndex = ListBox1.Items.Count -1 then
    ListBox1.ItemIndex := 0
  else
    ListBox1.ItemIndex := ListBox1.ItemIndex   1;      WindowsMediaPlayer1.URL := ListBox1.Items[ListBox1.ItemIndex];
  WindowsMediaPlayer1.Controls.Play;
end;
-- hagar. 發表人 - hagar 於 2005/07/04 16:09:39
alanyuan
一般會員


發表:15
回覆:20
積分:7
註冊:2005-07-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-04 12:39:55 IP:61.228.xxx.xxx 未訂閱
因為我有設定AutoStart:=true; 因此加不加WindowsMediaPlayer1.Controls.Play; 這一行似乎結果都是…會去連線並試圖播放,但最後還是會回到"就緒"的狀態,就不會繼續播放了,但若我自己按下media player的[play]鍵,它就會播放新的檔案,還是不解這點,但仍然謝謝您的回應,也期望各位高手能提供這個問題的解決方法,謝謝。    
alanyuan
一般會員


發表:15
回覆:20
積分:7
註冊:2005-07-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-08 12:00:04 IP:61.228.xxx.xxx 未訂閱
謝謝hagar大大:     其實我之前寫出來這個程式,後來硬碟壞了,重寫時又寫不太出來,我記得當時也有用Playstate=8但另外好像還配合了openstatechange中的newstate=x,再去執行一些動作,因為是一時試出來的,寫法一直想不起來,因為playstate=8時,mediaplayer還是要去將檔案位置回到頭,因此若先更改檔案,還是無效,本來是想用sleep之類的指令,但系統會整個停止,您的方法已經試過也成功了,再次感謝您。
系統時間:2024-04-19 7:25:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!