![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проиграть звук
ser_ega © (2004-05-09 00:20:00)PlaySound(FileName, 0, SND_FILENAME);
Если я использую несколько раз подряд такой код, не успевает 1-ый доиграть он прерывается и начинает играть следующий и т.д. Что делать??? Я делаю так
Begin
PlaySound(FileName1, 0, SND_FILENAME);
PlaySound(FileName2, 0, SND_FILENAME);
PlaySound(FileName3, 0, SND_FILENAME);
End;
Mim1 (2004-05-09 00:27:00) [1]Как вариант.
Вызывайте эти функции в отделоном потоке, с использованием параметра SND_SYNC
unit Unit2;
interface
uses
Classes;
type
TSoundplayer = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
implementation
procedure TSoundplayer.Execute;
begin
PlaySound(FileName1, 0, SND_FILENAME+SND_SYNC);
PlaySound(FileName2, 0, SND_FILENAME+SND_SYNC);
PlaySound(FileName3, 0, SND_FILENAME+SND_SYNC);
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
with TSoundplayer.Create(true) do
begin
FreeOnTerminate := true;
Resume;
end;
end;
end.