Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как одновременно проиграть два файла? [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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо