怎么用RealOnePlay的DLL 作能播放rm,rmvb格式的播放器呀? (200分)

W

wind520

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么用RealOnePlay的DLL 作能播放rm,rmvb格式的播放器呀?
能告诉我哪些DLl的函数吗?
 
刚看了一下,引入Real Player ActiveX就可以了
procedure TForm1.BitBtn1Click(Sender: TObject);
begin

RealAudio1.SetSource('c:/t.rm');
RealAudio1.DoPlay;
end;
 
我就是不需要引入Real Player ActiveX,就可以播放
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, OleCtrls, RealAudioObjects_TLB, ComObj;

type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;


var
Form1: TForm1;
Real: IRealAudioDisp;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin

Real := CreateComobject(CLASS_RealAudio) as IRealAudioDisp;
Real.SetSource('file://c:/t.ram');
Real.DoPlay;
end;


end.

 
你这样还不是变相的使用用Real Player ActiveX,
我需要的是不安装RealOne Player,只是调用他的Dll来播放rm,rmvb的文件,就像超级解霸3一样
 
人家已经做成了Com,你非要当Dll用。
这样不是自找麻烦吗?
当然当Dll用肯定也是可以的,因为Com组件首先必须是Dll。
你先自己试试吧,我是觉得这种“脱裤子放屁---多此一举”的事情做起来没什么意义。
 

安装Real Player后,你会发现在Program Files/Common Files根目录下有一个Real目录下,里面分别有Codecs、Common、Plugins、Update、Visualizations子目录,里面都是一些动态链接文件,这个可是Real Player的核心力量


打开豪杰的的安装目录,你会发现在豪杰的安装目录下也有Codecs、Common、Plugins比较一下,你就会发现这几个目录中的文件,全是与Program Files/Common Files相对应目录中的文件啊!


让我们打开豪杰来播放一个RM格式的文件,然后打开Winodws优化大师的进程管理(当然用其它查看进程也可以),发现豪杰在引用Program Files/Common Files/Real目录下的文件


发现了这个秘密,说明我们只要能够明白豪杰的大概原理,就可以做出既使客户端没有Real Player也同样如豪杰那样播放RM格式的影音文件了!


打开注册表,在[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/]和[HKEY_CLASSES_ROOT/ CLASSES/Software/]分支下都有名为RealNetworks的项(这分支下RealNetworks里面的内容是完全一样,唯一不同的是它们的支名),当我们卸载Real Player,Real Player就会删除RealNetworks项。这时再用豪杰来播放RM文件,我们就会发现豪杰就会在上述两分支重建RealNetworks项(即使你再次手动删除,当你用豪杰播放RM文件时豪杰,它就会又重建RealNetworks项)。

导出[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/RealNetworks]分支.最好先删除这一分支后,在打开豪杰播放RM文件,让豪杰来重建RealNetworks。因为豪杰引用较少的文件就能播放,而Real Player引用的较复杂,没有必要去浪费资源!


在导出文件中有以下三项内容:(假设豪杰安装在D盘) [HKEY_LOCAL_MACHINE/Software/CLASSES/Software/RealNetworks/Prefe_rences/DT_Common]

@="D://HEROSOFT//HERO2001//Common//"(是引用豪杰Common目录)

[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/RealNetworks/Prefe_rences/DT_Plugins]

@="D://HEROSOFT//HERO2001//Plugins//"(是引用豪杰Plugins目录)

[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/RealNetworks/Prefe_rences/DT_Codecs]

@="D://HEROSOFT//HERO2001//Codecs//"(是引用豪杰Codecs目录)

从导出文件剪切以上三项与下面两项合并成一个注册表文件,这样导出文件的剩余部分即为公用部分(无论是Real Player还是豪杰都必不可小的)。


[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Software/RealNetworks/Update/6.0/Preferen_ces/Components/RMACore:6.0/File17]

@="D://Windows//System//pncrt.dll"(引用pncrt.dll)

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Software/RealNetworks/RealPlayer/6.0/Pref_erences/DataTypes/rpmOCX/OCXDLL]

@="D://Windows//System//rmoc3260.dll"(引用rmoc3260.dll)

这样新合成的注册表文件,可根据你文件所在目录随意修改(即5处下画线处),只要你愿意,你可以将这些文件藏在你电脑的任意一个角落里!而公用部分导入注册表后就不用问它了!

注意事项:导出的注册表会因为操作系统不同导出的形式略有不同,因为WINDOWS 98是采用16位注册表编辑器,而WINDOWS 2000以上的是基于32位注册表编辑器。但它们所导出的内容是完全一样的!

这样就大功告成了!干快试试吧!让你的程序没有Real Plyaer一样干活!

( 此方法在WINDOWS 98 / 2000 / 2000 Server / XP均可通过!)

 
我试了,
1:先导入注册表:
{
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/RealNetworks/Prefe_rences/DT_Common]
@="D://Wind//real//Real//Common//"

[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/RealNetworks/Prefe_rences/DT_Plugins]
@="D://Wind//real//Real//Plugins//"

[HKEY_LOCAL_MACHINE/Software/CLASSES/Software/RealNetworks/Prefe_rences/DT_Codecs]
@="D://Wind//real//Real//Codecs//"


[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Software/RealNetworks/Update/6.0/Preferen_ces/Components/RMACore:6.0/File17]
@="D://Wind//real//pncrt.dll"

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Software/RealNetworks/RealPlayer/6.0/Pref_erences/DataTypes/rpmOCX/OCXDLL]
@="D://Wind//real//rmoc3260.dll"
}
2:在运行 regsvr32 D:/wind/real/rmoc3260.dll
还是放不出来,报错:“未指定的错误”

要是可以播放,怎么把视频显示到我指定的窗体上??/
 
对,如果想在PANEL里播放,怎么做?
 
用COM方式也可以啊
当打包时,安装程序(如WISE)会将相应的OCX打到包里的
 
这我知道
 
怎么没有人呀?怎么把视频显示到我指定的窗体上??/
 
指定窗口句柄,不过没亲自试
 
顶部