Yaroslav950
Участник
@LexBell,по видимости даного видео. Хорошо бы пример привести.(я имею виду по коду).
procedure VideoTmr(Sender: TObject);
begin
if DXvideoGetCurrentTime(v)=5 then DXvideoSetTime (v, 0);
end;
procedure InitializeWizard();
begin
with TTimer.Create(WizardForm) do
begin
Interval := 10;
OnTimer := @VideoTmr;
end;
end;
procedure VideoTmr(Sender: TObject);
begin
if DXvideoGetCurrentTime(Video)>=5 then DXvideoSetTime (Video, 0);
end;
Можно, конечно. так-же в таймере отслеживать окончание видео и после окончания делать то, что нужно. DXvideoInit тогда лучше не вызывать, чтобы видео по кругу не пошло, иначе окончание видео можно не поймать.@LexBell,я ж чего и спрашиваю есть ли такой код,когда видео заканичивается и повтор шёл не сейчас, а допустим через 5 секунд или допустим переходил к не к повтору а ко 2 торому видео.
procedure VideoTmr(Sender: TObject);
begin
if DXvideoGetCurrentTime(Video)=DXvideoGetFinishedTime(Video) then
begin
Sleep(5000);
DXvideoSetTime (Video, 0);
TTimer(Sender).Free; // убиваем этот таймер
end;
end;
Вот эти два разьяснения ближе к делу. Видео можно запустить как сплешку, по поводу MainForm (во весь экран). А примерчики можно?.Если хочется типа видео-сплеш, то нужно на этапе InitializeSetup запускать, если хочется на фоне во весь экран, то нужно видео запускать на MainForm.
var
Video: Integer;
l : Double;
function GetSystemMetrics (nIndex: Integer): Integer;
external 'GetSystemMetrics@User32.dll stdcall setuponly';
procedure VideoTmr(Sender: TObject);
begin
if DXvideoGetCurrentTime(Video)=l then
begin
DXvideoPause(Video);
DXvideoFree;
TTimer(Sender).Free;
end;
end;
function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('{#Video}');
Video:=DXvideoAdd(0, ExpandConstant('{tmp}\{#Video}'), 0, 0, 0, GetSystemMetrics(0), GetSystemMetrics(1), 0);
l := DXvideoGetFinishedTime(Video);
DXvideoSetVisible(Video,True);
DXvideoFullScreen(Video);
with TTimer.Create(nil) do
begin
Interval := 10;
OnTimer := @VideoTmr;
end;
Result := True;
end;