社区
C++ Builder
帖子详情
请问如何用TMEDIAPLAYER实现自动播放VCD啊?
SODATEA
2003-09-30 01:50:33
最好STEP BY STEP
小弟先谢过
...全文
56
4
打赏
收藏
请问如何用TMEDIAPLAYER实现自动播放VCD啊?
最好STEP BY STEP 小弟先谢过
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ljianq
2003-09-30
打赏
举报
回复
监视CD-ROM,发现VCD则播放。
zihan
2003-09-30
打赏
举报
回复
不好意思.刚才把两个东西帖错地方了.
监视光驱中是否有光盘
拦截消息WM_DEVICECHANGE即可!
//响应该消息
procedure Tform1.WMDEVICECHANGE(var msgx :Tmessage);
const
DBT_DEVICEARRIVAL=$8000;
DBT_DEVICEREMOVECOMPLETE=$8004;
begin
inherited;
case msgx.WParam of
DBT_DEVICEARRIVAL:Caption :='有了!';
DBT_DEVICEREMOVECOMPLETE:Caption :='取走了';
end;
end;
判断光驱中的Audio cd
function IsAudioCD(Drive : char) : bool;
var
DrivePath : string;
MaximumComponentLength : DWORD;
FileSystemFlags : DWORD;
VolumeName : string;
begin
Result := false;
DrivePath := Drive + ':\';
if GetDriveType(PChar(DrivePath)) <> DRIVE_CDROM then exit;
SetLength(VolumeName, 64);
GetVolumeInformation(PChar(DrivePath),
PChar(VolumeName),
Length(VolumeName),
nil,
MaximumComponentLength,
FileSystemFlags,
nil,
0);
if lStrCmp(PChar(VolumeName),'Audio CD') = 0 then result := true;
end;
function PlayAudioCD(Drive : char) : bool;
var
mp : TMediaPlayer;
begin
result := false;
Application.ProcessMessages;
if not IsAudioCD(Drive) then exit;
mp := TMediaPlayer.Create(nil);
mp.Visible := false;
mp.Parent := Application.MainForm;
mp.Shareable := true;
mp.DeviceType := dtCDAudio;
mp.FileName := Drive + ':';
mp.Shareable := true;
mp.Open;
Application.ProcessMessages;
mp.Play;
Application.ProcessMessages;
mp.Close;
Application.ProcessMessages;
mp.free;
result := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not PlayAudioCD('D') then
ShowMessage('Not an Audio CD');
end;
zihan
2003-09-30
打赏
举报
回复
监视光驱中是否有光盘
拦截消息WM_DEVICECHANGE即可!
//响应该消息
procedure Tform1.WMDEVICECHANGE(var msgx :Tmessage);
const
DBT_DEVICEARRIVAL=$8000;
判断光驱中的Audio cd
function IsAudioCD(Drive : char) : bool;
var
DrivePath : string;
MaximumComponentLength : DWORD;
FileSystemFlags : DWORD;
VolumeName : string;
begin
Result := false;
DrivePath := Drive + ':\';
if GetDriveType(PChar(DrivePath)) <> DRIVE_CDROM then exit;
SetLength(VolumeName, 64);
GetVolumeInformation(PChar(DrivePath),
PChar(VolumeName),
Length(VolumeName),
nil,
MaximumComponentLength,
FileSystemFlags,
nil,
0);
if lStrCmp(PChar(VolumeName),'Audio CD') = 0 then result := true;
end;
function PlayAudioCD(Drive : char) : bool;
var
mp : TMediaPlayer;
begin
result := false;
Application.ProcessMessages;
if not IsAudioCD(Drive) then exit;
mp := TMediaPlayer.Create(nil);
mp.Visible := false;
mp.Parent := Application.MainForm;
mp.Shareable := true;
mp.DeviceType := dtCDAudio;
mp.FileName := Drive + ':';
mp.Shareable := true;
mp.Open;
Application.ProcessMessages;
mp.Play;
Application.ProcessMessages;
mp.Close;
Application.ProcessMessages;
mp.free;
result := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not PlayAudioCD('D') then
ShowMessage('Not an Audio CD');
end;
DBT_DEVICEREMOVECOMPLETE=$8004;
begin
inherited;
case msgx.WParam of
DBT_DEVICEARRIVAL:Caption :='有了!';
DBT_DEVICEREMOVECOMPLETE:Caption :='取走了';
end;
end;
SODATEA
2003-09-30
打赏
举报
回复
最好STEP BY STEP
谢谢先……
具体代码的用法,越简单越好
Delphi-T
MediaPlayer
和TTrackBar的使用
T
MediaPlayer
和TTrackBar的使用实例
Delphi使用
MediaPlayer
控件
播放音乐的小demo,检索下载的文件夹,添加目录中的mp3格式文件。可双击listbox播放音乐,也可以单击播放音乐
播放多媒体文件(c++builder)
播放多媒体文件(c++builder),播放多媒体文件(c++builder)!!
自制MP3播放器 (T
MediaPlayer
/BmpShape)
一个自制MP3播放器(含原代码)这个程序的关键是BmpShape的应用。unit BmpShape;{2002/08/22 by ultrared根据BMP文件创建窗口注意:1. BMP文件最左上的一个点颜色作为背景色2. BmpShape控件只能用在TForm容器上3. BMP文件可以是256色或者24位色4。大块背景色必须和背景色绝对相等才能获得正常效果}interfaceuses Forms,Windows, Messages, SysUtils, Classes, Controls, ExtCtrls,Graphics;type TBmpShape = class(TImage) private { Private declarations } BackColor:TColor;//背景颜色 FColorDither:boolean;//是否允许背景颜色有一定的抖动 function GetRegion:HRGN;//前景图片的区域 procedure setColorDither(cd:Boolean); protected { Protected declarations } public { Public declarations } constructor Create(AOwner:TComponent);override; procedure Apply;//使用效果 published { Published declarations } property Dither:Boolean read FColorDither write setColorDither; end;procedure Register;implementationprocedure Register;begin RegisterComponents('Samples', [TBmpShape]);end;procedure TBmpShape.setColorDither(cd:Boolean);begin if cd<>FColorDither then FColorDither:=cd;end;constructor TBmpShape.Create(AOwner:TComponent);begin inherited Create(AOwner); BackColor:=RGB(0,0,0); FColorDither:=FALSE;end;//核心子程序,获得BMP图片的前景区域function TBmpShape.GetRegion:HRGN;var i,j:integer; rgn1,rgn2:HRGN; StartY:integer; r,g,b,r1,g1,b1:BYTE; cc:TColor;begin if Picture.Bitmap<>nil then begin BackColor:=Picture.Bitmap.Canvas.Pixels[0,0]; rgn1:=CreateRectRgn(0,0,0,0); for i:=0 to Picture.Bitmap.Width-1 do begin StartY:=-1; for j:=0 to Picture.Bitmap.Height-1 do begin cc:=Picture.Bitmap.Canvas.Pixels[i,j]; if FColorDither then begin //允许和背景有一定的色差 r:=(cc and $FF0000) shr 16; g:=(cc and $FF00) shr 8; b:=cc and $FF; r1:=(BackColor and $FF0000) shr 16; g1:=(BackColor and $FF00) shr 8; b1:=BackColor and $FF; if (abs(r-r1)<10) and (abs(g-g1)<10) and (abs(b-b1)<10) then begin if (StartY>=0) and (j>=StartY) then begin rgn2:=CreateRectRgn(i,StartY,i+1,j); CombineRgn(rgn1,rgn1,rgn2,RGN_OR); StartY:=-1; end; end else begin if Starty<0 then StartY:=j else if j=(Picture.Bitmap.Height-1) then //最下面一个点 begin rgn2:=CreateRectRgn(i,StartY,i+1,j); CombineRgn(rgn1,rgn1,rgn2,RGN_OR); end; end; end else //不允许色差 begin if cc=BackColor then begin if (StartY>=0) and (j>=StartY) then begin rgn2:=CreateRectRgn(i,StartY,i+1,j); CombineRgn(rgn1,rgn1,rgn2,RGN_OR); StartY:=-1; end; end else begin if Starty<0 then StartY:=j else if j=(Picture.Bitmap.Height-1) then //最下面一个点 begin rgn2:=CreateRectRgn(i,StartY,i+1,j); CombineRgn(rgn1,rgn1,rgn2,RGN_OR); end; end; end; end; end; result:=rgn1; end else result:=0;end;procedure TBmpShape.Apply;begin if Parent is TForm then begin Left:=0; Top:=0; Width:=Picture.Bitmap.Width; Height:=Picture.Bitmap.Height; with (Parent as Tform) do begin BorderStyle:=bsNone; Width:=Self.Width; Height:=Self.Height; end; SetWindowRgn(Parent.Handle,GetRegion,FALSE); end;end;end.
精典源码Delphi032:校园网多媒体
自动播放
系统.rar
精典源码Delphi032:校园网多媒体
自动播放
系统.rar
C++ Builder
13,871
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章