转自: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~~~~~