轉自:http://home.51.com/qq105533846/diary/item/10052777.html

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, WMPLib_TLB, StdCtrls, ExtCtrls; type TForm1 = class(TForm) WindowsMediaPlayer1: TWindowsMediaPlayer; Button1: TButton; Button2: TButton; Edit2: TEdit; Timer1: TTimer; Button4: TButton; Button5: TButton; Panel1: TPanel; Button3: TButton; CheckBox1: TCheckBox; Panel2: TPanel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormResize(Sender: TObject); private { Private declarations } public { Public declarations } end; TLocOleCtrl = Class (TOleControl); var Form1: TForm1; implementation {$R *.dfm} var starttime,endtime:extended; procedure TForm1.Button1Click(Sender: TObject); begin WindowsMediaPlayer1.controls.stop; end; procedure TForm1.Button2Click(Sender: TObject); begin WindowsMediaPlayer1.controls.play; end; procedure TForm1.Timer1Timer(Sender: TObject); begin edit2.Text:=WindowsMediaPlayer1.controls.currentPositionString; //edit2.Text:=floattostr(WindowsMediaPlayer1.controls.currentPosition); if (starttime>0) and (endtime>0) and (endtime>starttime) and (CheckBox1.Checked=true) then if WindowsMediaPlayer1.controls.currentPosition>endtime then WindowsMediaPlayer1.controls.currentPosition :=starttime; end; procedure TForm1.Button4Click(Sender: TObject); begin starttime:=WindowsMediaPlayer1.controls.currentPosition; end; procedure TForm1.Button5Click(Sender: TObject); begin endtime:=WindowsMediaPlayer1.controls.currentPosition; end; procedure TForm1.Button3Click(Sender: TObject); begin WindowsMediaPlayer1.controls.pause; end; procedure TForm1.FormResize(Sender: TObject); begin TLocOleCtrl (WindowsMediaPlayer1).OnPosRectChange (Rect (0, 0, Panel2.Width, Panel2.Height)); end; end.
參考資料如下:
摘自http://topic.csdn.net/t/20041117/19/3562715.html
MediaPlayer9 ActiveX 攻略(原創)
作者:小高
QQ:66814872
MSN:wins_cn@hotmail.com
一、安裝
這個不用多說,多數人都知道,在Delphi7中選擇“Component ——Import ActiveX Control...”菜單,會彈出“Import ActiveX0”窗口。在列表中選擇“Windows Media Player(Version 1.0)”,再點擊“Install”......
當然,得先安裝Mediaplayer 9。另外,最好是使用Delphi7,因為我發現Mp9 ActiveX在Delphi7提供的內容比Delphi6更豐富,delphi6以下的版本我就沒有測試過了。
二、
[基本屬性]
URL:string 可以指定媒體位置
enableContextMenu:Boolean 顯示/不顯示播放位置的右鍵菜單
fullScreen:boolean 全屏顯示
stretchToFit:boolean 非全屏狀態時是否伸展到最佳大小
uMode:string 播放器的模式,full:有下面的控制條; none:只有播放部份沒有控制條
playState:integer 當前控件狀態,下面是三種基本狀態:
3:正在播放
2:暫停
1:已停止
狀態變化時會觸發OnStatusChange事件
可通過WindowsMediaPlayer.controls對播放器進行控制並取得相關的一些信息:
controls.play; 播放
controls.stop; 停止
controls.pause; 暫停
controls.currentPosition:Double 當前播放進度
controls.currentPositionString:string 時間格式的字符串 "0:32 "
可以通過WindowsMediaPlayer.currentMedia取得當前媒體的信息
currentMedia.duration Double 總長度
currentMedia.durationString 時間格式的字符串 "4:34 "
可以通過WindowsMediaPlayer.settings對播放器進行設置,包括音量和聲道等。
settings.volume:integer 音量 (0-100)
settings.balance:integer 聲道,通過它應該可以進行立體聲、左聲道、右聲道的控制。但對應的取值尚不清楚。
摘自http://hi.baidu.com/itisntwatithink/blog/item/600723346775521a91ef397f.html
在DELPHI中使用微軟的WindowsMediaPlayer ActiveX控件的時候,如果想讓控件隨窗口大小一起改變
在DELPHI中使用微軟的WindowsMediaPlayer ActiveX控件的時候,如果想讓控件隨窗口大小一起改變,
最常用的方法就是設置控件的Align屬性,但是你會發現,對於ActiveX控件,會出現問題,下面把解決
辦法貼出來。
在網上搜索了很多貼子,有設置WindowsMediaPlayer控件的焦點的,有使用DoObjectVerb (-1)辦法的。
這兩種辦法在2000以下的操作系統中沒有問題,但是在XP以上的系統中,因為其默認設置的效果是“拖動
時改變窗口大小”,這樣會不讓你改變窗口大小。但是最大化、最小化的時候,沒問題。
最后在一個國外的論壇上找到了解決辦法,方法如下:
一勞永逸的解決辦法是:
1、先在窗口里定義一個類型:
TLocOleCtrl = Class (TOleControl);
2、在窗口的OnResize事件里加上:
TLocOleCtrl (WindowsMediaPlayer1).OnPosRectChange (Rect (0, 0, ClientWidth, ClientHeight));
通過以上兩點設置,一切OK~~~~~