永明商贸 發表於 2019-7-1 11:20:00

delphi 用windowsmediaplayer播放

<p>转自:http://home.51.com/qq105533846/diary/item/10052777.html</p>
<div class="cnblogs_code"><img id="code_img_closed_9d74e428-f3c1-4680-8745-e8c343a5e383" class="code_img_closed lazyload" alt="" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_9d74e428-f3c1-4680-8745-e8c343a5e383" class="code_img_opened lazyload" style="display: none" alt="" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_9d74e428-f3c1-4680-8745-e8c343a5e383" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 0, 255, 1)">unit</span><span style="color: rgba(0, 0, 0, 1)"> Unit1;

</span><span style="color: rgba(0, 0, 255, 1)">interface</span>

<span style="color: rgba(0, 0, 255, 1)">uses</span><span style="color: rgba(0, 0, 0, 1)">
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, WMPLib_TLB, StdCtrls, ExtCtrls;

</span><span style="color: rgba(0, 0, 255, 1)">type</span><span style="color: rgba(0, 0, 0, 1)">
TForm1 </span>= <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)">(TForm)
    WindowsMediaPlayer1: TWindowsMediaPlayer;

    Button1: TButton;
    Button2: TButton;
    Edit2: TEdit;
    Timer1: TTimer;
    Button4: TButton;
    Button5: TButton;
    Panel1: TPanel;
    Button3: TButton;
    CheckBox1: TCheckBox;
    Panel2: TPanel;
    </span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> Button1Click(Sender: TObject);
    </span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> Button2Click(Sender: TObject);
    </span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> Timer1Timer(Sender: TObject);
    </span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> Button4Click(Sender: TObject);
    </span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> Button5Click(Sender: TObject);
    </span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> Button3Click(Sender: TObject);
    </span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> FormResize(Sender: TObject);
   
</span><span style="color: rgba(0, 0, 255, 1)">private</span>
    <span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)"> Private declarations </span><span style="color: rgba(0, 128, 0, 1)">}</span>
<span style="color: rgba(0, 0, 255, 1)">public</span>
    <span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)"> Public declarations </span><span style="color: rgba(0, 128, 0, 1)">}</span>
<span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;
TLocOleCtrl </span>=<span style="color: rgba(0, 0, 0, 1)"> Class (TOleControl);
</span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
Form1: TForm1;

</span><span style="color: rgba(0, 0, 255, 1)">implementation</span>

<span style="color: rgba(0, 128, 0, 1)">{</span><span style="color: rgba(0, 128, 0, 1)">$R *.dfm</span><span style="color: rgba(0, 128, 0, 1)">}</span>
<span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)">
starttime,endtime:extended;
</span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TForm1.Button1Click(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
WindowsMediaPlayer1.controls.stop;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TForm1.Button2Click(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
WindowsMediaPlayer1.controls.play;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TForm1.Timer1Timer(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
edit2.Text:</span>=<span style="color: rgba(0, 0, 0, 1)">WindowsMediaPlayer1.controls.currentPositionString;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">edit2.Text:=floattostr(WindowsMediaPlayer1.controls.currentPosition);</span>

<span style="color: rgba(0, 0, 255, 1)">if</span> (starttime&gt;<span style="color: rgba(128, 0, 128, 1)">0</span>) <span style="color: rgba(0, 0, 255, 1)">and</span> (endtime&gt;<span style="color: rgba(128, 0, 128, 1)">0</span>) <span style="color: rgba(0, 0, 255, 1)">and</span> (endtime&gt;starttime) <span style="color: rgba(0, 0, 255, 1)">and</span> (CheckBox1.Checked=true) <span style="color: rgba(0, 0, 255, 1)">then</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> WindowsMediaPlayer1.controls.currentPosition&gt;endtime <span style="color: rgba(0, 0, 255, 1)">then</span><span style="color: rgba(0, 0, 0, 1)">
WindowsMediaPlayer1.controls.currentPosition :</span>=<span style="color: rgba(0, 0, 0, 1)">starttime;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TForm1.Button4Click(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
starttime:</span>=<span style="color: rgba(0, 0, 0, 1)">WindowsMediaPlayer1.controls.currentPosition;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TForm1.Button5Click(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
endtime:</span>=<span style="color: rgba(0, 0, 0, 1)">WindowsMediaPlayer1.controls.currentPosition;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TForm1.Button3Click(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
WindowsMediaPlayer1.controls.pause;
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">procedure</span><span style="color: rgba(0, 0, 0, 1)"> TForm1.FormResize(Sender: TObject);
</span><span style="color: rgba(0, 0, 255, 1)">begin</span><span style="color: rgba(0, 0, 0, 1)">
TLocOleCtrl (WindowsMediaPlayer1).OnPosRectChange (Rect (</span><span style="color: rgba(128, 0, 128, 1)">0</span>, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">, Panel2.Width, Panel2.Height));
</span><span style="color: rgba(0, 0, 255, 1)">end</span><span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 0, 255, 1)">end</span>.</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><br>参考资料如下:<br><br>摘自http://topic.csdn.net/t/20041117/19/3562715.html<br><br>MediaPlayer9&nbsp;&nbsp; ActiveX&nbsp;&nbsp; 攻略(原创) <br><br>作者:小高 <br>QQ:66814872 <br>MSN:wins_cn@hotmail.com <br><br>一、安装 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个不用多说,多数人都知道,在Delphi7中选择“Component&nbsp;&nbsp; ——Import&nbsp;&nbsp; ActiveX&nbsp;&nbsp; Control...”菜单,会弹出“Import&nbsp;&nbsp; ActiveX0”窗口。在列表中选择“Windows&nbsp;&nbsp; Media&nbsp;&nbsp; Player(Version&nbsp;&nbsp; 1.0)”,再点击“Install”...... <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当然,得先安装Mediaplayer&nbsp;&nbsp; 9。另外,最好是使用Delphi7,因为我发现Mp9&nbsp;&nbsp; ActiveX在Delphi7提供的内容比Delphi6更丰富,delphi6以下的版本我就没有测试过了。 <br><br>二、<br>[基本属性] <br><br>URL:string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以指定媒体位置 <br>enableContextMenu:Boolean&nbsp;&nbsp; 显示/不显示播放位置的右键菜单 <br>fullScreen:boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 全屏显示 <br>stretchToFit:boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 非全屏状态时是否伸展到最佳大小 <br>uMode:string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 播放器的模式,full:有下面的控制条;&nbsp;&nbsp; none:只有播放部份没有控制条 <br>playState:integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前控件状态,下面是三种基本状态: <br>3:正在播放 <br>2:暂停 <br>1:已停止 <br>状态变化时会触发OnStatusChange事件 <br><br>&nbsp;<br>可通过WindowsMediaPlayer.controls对播放器进行控制并取得相关的一些信息: <br>&nbsp; controls.play;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 播放 <br>&nbsp; controls.stop;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 停止 <br>&nbsp; controls.pause;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 暂停 <br>&nbsp; controls.currentPosition:Double&nbsp;&nbsp; 当前播放进度 <br>&nbsp; controls.currentPositionString:string&nbsp;&nbsp; 时间格式的字符串&nbsp;&nbsp; "0:32 " <br><br>&nbsp;<br>可以通过WindowsMediaPlayer.currentMedia取得当前媒体的信息 <br>&nbsp; currentMedia.duration&nbsp;&nbsp;&nbsp;&nbsp; Double&nbsp;&nbsp; 总长度 <br>&nbsp; currentMedia.durationString&nbsp;&nbsp; 时间格式的字符串&nbsp;&nbsp; "4:34 " <br><br>&nbsp;<br>可以通过WindowsMediaPlayer.settings对播放器进行设置,包括音量和声道等。 <br>settings.volume:integer&nbsp;&nbsp; 音量&nbsp;&nbsp; (0-100) <br>settings.balance:integer&nbsp;&nbsp; 声道,通过它应该可以进行立体声、左声道、右声道的控制。但对应的取值尚不清楚。 <br><br>&nbsp;<br><br>摘自http://hi.baidu.com/itisntwatithink/blog/item/600723346775521a91ef397f.html<br><br>在DELPHI中使用微软的WindowsMediaPlayer ActiveX控件的时候,如果想让控件随窗口大小一起改变<br><br>在DELPHI中使用微软的WindowsMediaPlayer ActiveX控件的时候,如果想让控件随窗口大小一起改变,<br>最常用的方法就是设置控件的Align属性,但是你会发现,对于ActiveX控件,会出现问题,下面把解决<br>办法贴出来。 <br><br>  在网上搜索了很多贴子,有设置WindowsMediaPlayer控件的焦点的,有使用DoObjectVerb (-1)办法的。<br>这两种办法在2000以下的操作系统中没有问题,但是在XP以上的系统中,因为其默认设置的效果是“拖动<br>时改变窗口大小”,这样会不让你改变窗口大小。但是最大化、最小化的时候,没问题。<br><br>最后在一个国外的论坛上找到了解决办法,方法如下:<br><br>一劳永逸的解决办法是:<br><br>1、先在窗口里定义一个类型:<br><br>TLocOleCtrl = Class (TOleControl);<br><br>2、在窗口的OnResize事件里加上:<br><br>TLocOleCtrl (WindowsMediaPlayer1).OnPosRectChange (Rect (0, 0, ClientWidth, ClientHeight));<br><br>通过以上两点设置,一切OK~~~~~</p><br><br>
来源:https://www.cnblogs.com/math98/p/11113031.html
頁: [1]
查看完整版本: delphi 用windowsmediaplayer播放