Мультимедиа под контролем или Функция mciSendString
05.12.2007 от Иван Ширко sbReturn: array [1..64] of char; //для возвращаемых значений
com: pchar; //посылаемая команда
После этого можно писать функции для управления проигрыванием:
//переход к дорожке с номером Track
procedure gototrack(Track: integer);
var
com:pchar;
begin
//установка формата времени в "Дорожка:Минуты:Секунды:Фреймы"
com:='set cdaudio time format tmsf';
mciSendString(com, @sbReturn, 64, 0);
//начинаем проигрывание дорожки Track
com:=pchar('play cdaudio from '+inttostr(Track));
mciSendString(com, @sbReturn, 64, 0);
//устанавливаем формат времени в миллисекунды
com:='set cdaudio time format ms';
mciSendString(com, @sbReturn, 64, 0);
end;
//получение номера текущей композиции
function GetCurrentTrack:byte;
var
com:pchar;
st:string;
begin
result := 0;
com := 'status cdaudio current track wait';
if (mciSendString(com, @sbReturn, 64, 0) <> 0) then
exit;
st := trim(sbReturn);
if (length(st) > 0) then
result := strtoint(st);
end;
//количество композиций на диске
function GetTracksCnt: integer;
var
st:string;
begin
result := 0;
com := 'status cdaudio number of tracks wait';
if (mciSendString(com, @sbReturn, 64, 0) <> 0) then
exit;
st := trim(sbreturn);
if (length(st) > 0) then
result := strtoint(st);
end;
//переход к следующей композиции
procedure NextTrack;
var
cur:integer;
begin
cur:=GetCurrentTrack;
//если текущая композиция – последняя, то переходим к первой
if (cur <>then
GoToTrack(cur+1)
else
GoToTrack(1);
end;
//переход к предыдущей композиции
procedure PrevTrack;
var
cur:integer;
begin
cur := getcurrentTrack;
if (cur > 1) then
GoToTrack(cur-1)
//если текущая композиция – первая, то переходим к последней
else
GoToTrack(GetTracksCnt);
end;
//длина композиции
function GetTrackLength(Track: integer): string;
begin
com := pchar('status cdaudio length track '+inttostr(Track)+' wait');
mciSendString(com, @sbReturn, 64, 0);
result := trim(sbReturn);
end;
//длина диска
function GetCDLength:string;
begin
com := pchar('status cdaudio length wait');
mciSendString(com, @sbReturn, 64, 0);
result := trim(sbReturn);
end;
//статус проигрывания
Рубрики: Delphi |
02.06.2008 в 15:27
Классно!
13.05.2009 в 13:35
Здравствуйте. Спасибо большое. Пишу только-только взглянув на статью(точнее скопировав себе для дальнейшего ознакомления =) ), но даже на первый взгляд очень информативная и удобочитаемая! (тем более, если Алексей Николаевич Родионов пишет, что “Классно!”, то мне точно понравится))))
Я как раз пишу курсовую работу по обработке звука.Спасибо большое.