Этот небольшой набор функций будет загружать, воспроизводить, останавливать и выгружать (свободную память) для любых звуковых файлов, поддерживаемых MCI. [* .wav, * .mp3, * .wma и т.д ...]
uses MMSystem;
function LoadMediaFile(absoluteFile,clipName: String): Integer;
var
pc2: PChar;
pc3: String;
begin
pc3 := '"'+absoluteFile+'"';
pc2 := PChar('Open ' + pc3 + ' Alias '+ clipName);
Result := mciSendString(pc2, PChar(0), 0, 0);
end;
function StartMediaFile(clipName: String) : Integer;
var
pc2: PChar;
begin
pc2 := PChar('Play ' + clipName + ' From ' + '0');
Result := mciSendString(pc2, PChar(0), 0, 0);
end;
function StopMediaFile(clipName: String): Integer;
var
pc2: PChar;
i: Integer;
begin
pc2 := PChar('Stop ' + clipName + ' wait');
i := 0;
while (mciSendString(pc2, PChar(0), 0, 0)<>0) and (i < 250) do
begin
Result := mciSendString(pc2, PChar(0), 0, 0); i := i + 1;
end;
end;
function DumpMediaFile(clipName: String): Integer;
var
pc2,pc3: PChar;
i: Integer;
begin
pc2 := PChar('Stop ' + clipName + ' wait');
pc3 := PChar('Close ' + clipName + ' Wait');
i := 0;
while (mciSendString(pc2, PChar(0), 0, 0)<>0) and (i < 250) do
begin
mciSendString(pc2, PChar(0), 0, 0); i := i + 1;
end;
i := 0;
while (mciSendString(pc3, PChar(0), 0, 0)<>0) and (i < 250) do
begin
Result := mciSendString(pc3, PChar(0), 0, 0); i := i + 1;
end;
end;
Используйте их так:
ResultInteger1 := LoadMediaFile('X:\Path\To\File.WAV', 'ClipName');
ResultInteger2 := StartMediaFile('ClipName');
Sleep(3000);
ResultInteger3 := StopMediaFile('ClipName');
ResultInteger4 := DumpMediaFile('ClipName');
Воспроизводит 3 секунды файла X: \ Path \ To \ File.WAV.
Вы можете использовать:
if ResultInteger2 <> 0 then ShowMessage('ClipName did not play.');
//or
if ResultInteger2 = 0 then ShowMessage('ClipName did play.');