15.01.2012, 10:13
|
|
Let Me Show You
|
|
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
|
|
Цитата:
Сообщение от Kaktuz
И таких программок штук десять и каждую запускать
|
вообще-то имелось в виду создавать нужное количество экземпляров TMCIPlayer (предполагалось обернуть все в класс), каждый отвечает за свой звук (запуск 2-х программ был для примера демонстрации микшера).
Код:
uses
MMSystem,
type
TMCIPlayer = class
private
FDeviceID: Cardinal;
public
constructor Create(FileName: String);
destructor Destroy; override;
procedure Play;
procedure Stop;
end;
{ TMCIPlayer }
constructor TMCIPlayer.Create(FileName: String);
var
OpenParms: TMCI_Open_Parms;
FFlags: Longint;
FError: Longint;
Buffer: array [0..$ff] of Char;
begin
inherited Create;
OpenParms.dwCallback:=0;
OpenParms.wDeviceID:=0;
OpenParms.lpstrDeviceType:='';
OpenParms.lpstrElementName:=PChar(FileName);
OpenParms.lpstrAlias:=PChar(IntToStr(GetTickCount)+#0);
FFlags:=MCI_WAIT or MCI_OPEN_ELEMENT or MCI_OPEN_ALIAS;
FError:=mciSendCommand(0, MCI_OPEN, FFlags, Longint(@OpenParms));
if FError=0 then FDeviceID:=OpenParms.wDeviceID
else
begin
FDeviceID:=0;
mciGetErrorString(FError, @Buffer[0], Length(Buffer));
ShowMessage(StrPas(@Buffer[0]));
end;
end;
destructor TMCIPlayer.Destroy;
var
GenericParms: TMCI_Generic_Parms;
FFlags: Longint;
begin
if FDeviceID<>0 then
begin
GenericParms.dwCallback:=0;
FFlags:=MCI_WAIT;
if mciSendCommand(FDeviceID, MCI_CLOSE, FFlags, Longint(@GenericParms))=0 then
FDeviceID:=0;
end;
inherited Destroy;
end;
procedure TMCIPlayer.Play;
var
PlayParms: TMCI_Play_Parms;
FFlags: Longint;
begin
if FDeviceID<>0 then
begin
FFlags:=MCI_NOTIFY;
PlayParms.dwCallback:=0;
PlayParms.dwFrom:=0;
PlayParms.dwTo:=0;
mciSendCommand(FDeviceID, MCI_PLAY, FFlags, Longint(@PlayParms));
end;
end;
procedure TMCIPlayer.Stop;
var
GenericParms: TMCI_Generic_Parms;
FFlags: Longint;
begin
if FDeviceID<>0 then
begin
FFlags:=MCI_WAIT;
GenericParms.dwCallback:=0;
mciSendCommand(FDeviceID, MCI_STOP, FFlags, Longint(@GenericParms));
end;
end;
ну и дальше:
Код:
TMCIPlayer.Create('c:\Windows\Media\flourish.mid').Play;
..
TMCIPlayer.Create('c:\Windows\Media\Windows Ringin.wav').Play;
не забывая разрушать объекты.
__________________
Пишу программы за еду.
__________________
|