如何动态修改Windows Media Player控件的视频窗口? (100分)

  • 主题发起人 主题发起人 siteboy
  • 开始时间 开始时间
还没有解决,请大家帮忙!!!!
 
为什么还没有人会?
大家是不是嫌分少,我再加200分,希望高手解决!!!另200分拿分地址:

http://www.delphibbs.com/delphibbs/dispq.asp?lid=1941826
 
要不我把我的程序发给你?呵呵,好像很简单的啊!
TfrmPlayerMain.FormResize(Sender: TObject);
//-----------------------------------------
if media_player_type='media' then
begin

media.Pause ;
media.DisplayRect :=pn_client.ClientRect;//如果是单独的窗口就为Frm_Other_pn_client.clientRect;
media.Resume ;
end;

这里Pn_client可以align=alClient到Form;
一点问题都没有啊!
 
一般注册只需要注册OCX或者dll就可以了,不注册与主程序放到一起就可以了
MediaPlayer不需要安装任何插件就可以使用,
flash需要注册Flash.ocx
还有注册RealAudio的方法:(还不如装一个RealPlay呢!98,2000均调试通过

需要的dll文件及目录:
pncrt.dll rmoc3260.dll可以在你的程序目录中或系统目;
其他如:
d:/rm/codes/ 文件略
d:/rm/common/本目录要包含以下文件:embd3260.dll,objb3201.dll,peen3260,
pngu3266,pngu3267,pnrs3260,rpcl3260,rpmn3260,rpun3260,rput3260,
security(有可能其中的某些不需要,但都包含则不会出错)
d:/rm/plugins/文件略

以下是需要写注册表的信息,其中的路径可以根据你的实际情况改变(本例为:d;/rm目录):
REGEDIT4
[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/realnetworks/Preferences]
[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/realnetworks/Preferences/DT_COMMON]
@="d://rm//COMMON//"
[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/realnetworks/Preferences/DT_PLUGINS]
@="d://rm//PLUGINS//"
[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/realnetworks/Preferences/DT_CODECS]
@="d://rm//CODECS//"

 
To heipi2002:

我照你的方法在FormResize事件中,加入如下代码都无法实现。
if media_player_type='media' then
begin

media.Pause ;
media.DisplayRect :=pn_client.ClientRect;
media.Resume ;
建议你把你的发给我看看,万分感谢!
siteboy@tom.com
 
很完整了,邮件已经发出,我那个程序比较复杂,有点不必要
procedure TForm1.Button1Click(Sender: TObject);
begin

mediaPlayer1.FileName :='c:/winnt/clock.avi';
mediaPlayer1.open;
mediaPlayer1.Play ;
mediaPlayer1.DisplayRect :=panel1.ClientRect ;
end;


procedure TForm1.FormResize(Sender: TObject);
begin

if (mediaPlayer1.DeviceID<>0) then

begin

mediaPlayer1.Pause ;
mediaPlayer1.DisplayRect :=panel1.ClientRect;
mediaPlayer1.Resume;
end else
exit;

end;


procedure TForm1.FormCreate(Sender: TObject);
begin

mediaPlayer1.Parent:=panel1;//不必要
mediaPlayer1.Visible :=false;
mediaPlayer1.Display:=panel1;
end;
 
TO heipi2002:
你搞错了吧,我指的是windows Media Player 而不是delphi自带的那个。
windows Media Player根本是没有DisplatRect属性的。
 
靠,没仔细看啊,
脸红中~~~~
呵呵,我看看,好像导入不了哦:)重名?
TmediaPlayer有什么放不了的吗?
Set_DisplaySize?
DisplayMode?
 
!!!!!!!!!!
不知道你用的是什么控件啊,
我Win2000P+sp3+MediaPlay6.4.09
msdxm.ocx导入成TmediaPlayerp控件

AutoSize := true;
这个属性是有的!
用aLign=alClient完全可以满足要求!如果不显示进度条的话可以自由调节视频比例!!
!!我没看清,你恐怕也没看清哦
 
TO heipi2002:
AutoSize := true;

aLign=alClient;
这两个属性我都试过了啦!是不行的,你看看之前大家答的,你就知道已经是很多方法都试了,不过就是不行呀。最简单的
procedure TForm1.Button1Click(Sender: TObject);
begin

WindowsMediaPlayer1.Width:=500;
end;

这样都不能成功做到,不信你试试,哈哈。。。。
 
很遗憾,WindowsMediaPlayer1.Width:=500;这样我可以做到!
播放也没有问题,呵呵,不知道怎么回事哦
“那来的这个属性或过程,没有呀 ”--这可是你说的

我在怀疑你学Delphi的时间,
恐怕不会超过两周吧,呵呵,
如果AlClient则不能用WindowsMediaPlayer1.Width:=500;
而应该用TPanel(WindowsMediaPlayer1.parent).width:=500;
当然这里Tpanel.Alclient:=none;
 
我知道我水平很差,但我很想学会,希望你能帮忙解决问题。谢谢你!
我再努力试试!!!!
 
不好意思,没搞过这方面的东西
如果可以的话,能不能把你的DEMO上传到我的主页,我帮你看看。
 
TO heipi2002:

我又试了,不行的,你是不是windows Media Player9呀
 
刚发过去的如果不能正常运行
把TMediaPlayerp改成TWindowsMediaPlayer试试(第10行)
我的是MediaPlay6.4.09
不会装MP9的
 
to heipi2002:
我照你的说法改了,还把mediaPlayerP1.play改成mediaPlayerP1.controls.play,可以编译通过。
但在windows Media Player9里,简直是一点作用也没有。[:(][:(][:(][:(]
 
to heipi2002:
你装mp9,并重新load进新组件,因mp9的activeX控件是新版的。
然后再试试!我想你会发觉我不只有二个星期那么少的。~-~
 
我来领分来了
WindowMediaPlayer1.DoObjectVerb(-1);
 
接受答案,问题结束!!!
 
WindowMediaPlayer1.DoObjectVerb(-1);
这一句在动态生成windowsmediaplayer控件时不起作用,只是让windowsmediaplayer控件充满窗口或它的父控件,不能改变画面的大小,pihome,那怎么在动态生成时起作用呢,请赐教!
 
后退
顶部