Мультимедиа под контролем или Функция mciSendString | Программирование на Delphi и не только

Почитайте!

Нас читают

Статьи о программировании и не только

Mail.Ru

Rambler's Top100

Programming Blogs - BlogCatalog Blog Directory

Реклама на сайте

заказ ж д билетов

Мультимедиа под контролем или Функция mciSendString

05.12.2007 от Иван Ширко

Страница: 1 2 3 4 5 6

  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;

//статус проигрывания

Страница: 1 2 3 4 5 6

Рубрики: Delphi |

Комментарии (2)

  1. Алексей Родионов пишет:

    Классно!

  2. Коньтяков Глеб пишет:

    Здравствуйте. Спасибо большое. Пишу только-только взглянув на статью(точнее скопировав себе для дальнейшего ознакомления =) ), но даже на первый взгляд очень информативная и удобочитаемая! (тем более, если Алексей Николаевич Родионов пишет, что “Классно!”, то мне точно понравится))))
    Я как раз пишу курсовую работу по обработке звука.Спасибо большое.

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.