sjwrec 21:22 20-03-2012Цитата: А вы можете мне помочь, чтобы происходило получение текущей позиции видео. И видео перематывалось на 5 секунд вперёд и назад.
Думаю как-то так [more=Код][Files]
Source: MEDIA\Video.avi; Flags: dontcopy
[Code]
//var
//time, ReturnLength:integer;
//ReturnString, ST:string;
var
CanUseXvid, VideoPlayed, VideoPause: Boolean;
time: Integer;
function mciSendString(lpstrCommand: String; lpstrReturnString: PAnsiChar; uReturnLength, hwndCallback: Integer): Integer; external 'mciSendStringA@winmm.dll stdcall';
procedure MenuOnClick3(Sender: TObject); // Воспроизведение/Пауза
begin
if CanUseXvid then begin
if VideoPlayed=False then begin
mciSendString('open '+ExpandConstant('{tmp}\Video.avi')+' type AVIVideo alias Video parent '+IntToStr(MainForm.Handle)+' style child','',0,0);
mciSendString('put Video window at 0 0 '+IntToStr((MainForm.Width)-1)+' '+IntToStr((MainForm.Height)-20)+'','',0,0);
mciSendString('set Video time format ms','',0,0);
mciSendString('play Video repeat','',0,0);
MainForm.ClientWidth:= 800;
MainForm.ClientHeight:= 600;
MainForm.Show;
VideoPlayed:=True;
VideoPause:=False;
end else begin
if VideoPause=False then begin
mciSendString('pause Video','',0,0);
VideoPlayed:=True;
VideoPause:=True;
end else begin
mciSendString('play Video repeat','',0,0);
MainForm.ClientWidth:= 800;
MainForm.ClientHeight:= 600;
MainForm.Visible:=True;
VideoPlayed:=True;
VideoPause:=False;
end;
end;
end;
end;
procedure VideoOnStop(Sender: TObject); // Стоп и Закрытие окна Видео
begin
if VideoPlayed=True then begin
mciSendString('close Video','',0,0);
MainForm.Hide;
VideoPlayed:=False;
VideoPause:=False;
end;
end;
procedure VideoOnSeekFF(Sender: TObject); // Перемотка Видео на 5 сек вперёд
var
rs: String;
begin
if VideoPlayed=True then begin
rs:= StringOfChar(#0, 64);
mciSendString('status Video position',rs,64,0);
time:=StrToInt(rs)+5000;
if time>StrToInt(rs) then
time:= StrToInt(rs);
mciSendString('seek Video to '+IntToStr(time)+'','',0,0);
mciSendString('play Video repeat','',0,0);
end;
end;
procedure VideoOnSeekREW(Sender: TObject); // Перемотка Видео на 5 сек назад
var
rs: String;
begin
if VideoPlayed=True then begin
rs:= StringOfChar(#0, 64);
mciSendString('status Video position',rs,64,0);
time:= StrToInt(rs)-5000;
if time<0 then time:= 0;
mciSendString('seek Video to '+IntToStr(time)+'','',0,0);
mciSendString('play Video repeat','',0,0);
end;
end;
procedure VideoPlayer();
begin
if not FileExists(ExpandConstant('{tmp}\Video.avi')) then ExtractTemporaryFile('Video.avi');
// Начало Создание MEDIA.
MainForm.Visible:=False;
MainForm.ClientWidth:= 800;
MainForm.ClientHeight:= 600;
// MainForm.BorderStyle:=bsSingle;
MainForm.Caption:= 'SJW Install Wizard - Media Player';
VideoPlayed:=False;
VideoPause:=False;
// time:=1;
end;[/more]. Не проверял, но должен работать.