![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как одновременно проиграть два файла? [D7, Win95/98, Win2k, WinXP]
kblc © (2004-07-29 18:11:00)Уважаемые мастера, как одновременно можно проиграть 2 файла (может компоненты есть, но лучше через MCI)?
вот код для проигрывания одного файла, но как сделать это сразу для двух файлов? потоки создавать?
procedure mciPlayFile(FileName: string);
var
Open_Params: TMCI_Open_Parms;
Play_Params: TMCI_Play_Parms;
FDeviceID: Word;
begin
Open_Params.dwCallback:=0;
Open_Params.wDeviceID:=0;
Open_Params.lpstrDeviceType:=PAnsiChar(Copy(Filename,Pos('.',Filename)+1,3));
Open_Params.LPSTRELEMENTNAME:=PChar(Filename);
mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT, Longint(@Open_Params));
FDeviceID:=Open_Params.wDeviceID;
mciSendCommand(FDeviceID, MCI_PLAY, MCI_WAIT, Longint(@Play_Params));
mciSendCommand(FDeviceID, MCI_CLOSE, 0, Longint(@Open_Params));
end;
Заранее спасибо за советы.
Вадим (2004-07-30 20:16:00) [1]
> kblc © (30.07.04 18:16) [6]
Вот здесь http://www.delphimaster.ru/cgi-bin/forum.pl?id=1082458665&n=7твою проблему уже решали! Там было так:
uses
MMSystem;
procedure SendMCICommand(Cmd: string);
var
RetVal: Integer;
ErrMsg: array[0..254] of char;
begin
RetVal := mciSendString(PChar(Cmd), nil, 0, 0);
if RetVal 0 then
begin
{get message for returned value}
mciGetErrorString(RetVal, ErrMsg, 255);
MessageDlg(StrPas(ErrMsg), mtError, [mbOK], 0);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMCICommand('open waveaudio shareable');
SendMCICommand('play "C:\xyz\BackgroundMusic.wav"');
SendMCICommand('play "C:\xyz\AnotherMusic.wav"');
SendMCICommand('close waveaudio');
end;
Или уж совсем внаглую:
mciSendString(PChar('play "C:\xyz\BackgroundMusic.wav"'), nil, 0, 0);
mciSendString(PChar('play "C:\xyz\AnotherMusic.wav"'), nil, 0, 0);
Удачи!
Анонимщик (2004-07-30 18:39:00) [2]Сделай пока как-нибудь через потоки. Остальное в понедельник.
kblc (2004-07-30 18:16:00) [3]Народ.. неужели мне никто не поможет?
kblc (2004-07-30 13:03:00) [4]Убрал MCI_WAIT и команде mciSend..(..,MCI_CLOSE,..).. И теперь ваще ничего не работает... почему? может я что-то не так делаю?
может кто-нить сорс покажет?
Анонимщик (2004-07-30 11:57:00) [5]Тебе же порекомендовали, убери ожидание и загружай на прослушивание еще один файл. Не получается?
kblc (2004-07-30 10:54:00) [6]ну а как сделать так, что бы я мог прослушать оба файла???
kblc (2004-07-30 10:54:00) [7]ну а как сделать так, что бы я мог прослушать оба файла одновременно???
pavia (2004-07-29 23:27:00) [8]убери MCI_WAIT.А как следствие строчка
mciSendCommand(FDeviceID, MCI_CLOSE, 0, Longint(@Open_Params)); должна сробатывать по зовершению фаила.Почитай про события mci.