您好亲爱的社区......
我刚看到Inno Setup的视频启动画面这个主题
Video file (with alpha) as splash-screen?
TLama(Inno Media Player的作者)提供的示例代码很棒,但它有一点问题&而已 : 代码中指向的Splash视频文件具有绝对路径,如:d:\ Video.avi 因此,如果我想将我的安装程序发布到其他计算机,绝对路径如d:\ Video.avi将不再起作用...
因此我要求作者(TLama)修改此脚本并使视频文件以相对路径播放,如:{src}或{tmp}。
想要询问作者的第二个修订是:
我想通过点击窗口的客户区来实现视频播放的关闭......这在上面的示例代码中是不可用的......
所以最后我要求TLama(Inno Media Player的作者)对以下代码实施两个要求的修订:
[Setup]
AppName=Media Player Project
AppVersion=1.0
DefaultDirName={pf}\Media Player Project
[Files]
Source: "MediaPlayer.dll"; Flags: dontcopy
[Code]
const
EC_COMPLETE = $01;
type
TDirectShowEventProc = procedure(EventCode, Param1, Param2: Integer);
function DSPlayMediaFile: Boolean;
external 'DSPlayMediaFile@files:mediaplayer.dll stdcall';
function DSStopMediaPlay: Boolean;
external 'DSStopMediaPlay@files:mediaplayer.dll stdcall';
function DSInitializeVideoFile(FileName: WideString; WindowHandle: HWND;
var Width, Height: Integer; CallbackProc: TDirectShowEventProc): Boolean;
external 'DSInitializeVideoFile@files:mediaplayer.dll stdcall';
var
VideoForm: TSetupForm;
procedure OnMediaPlayerEvent(EventCode, Param1, Param2: Integer);
begin
if EventCode = EC_COMPLETE then
VideoForm.Close;
end;
procedure OnVideoFormShow(Sender: TObject);
begin
DSPlayMediaFile;
end;
procedure OnVideoFormClose(Sender: TObject; var Action: TCloseAction);
begin
DSStopMediaPlay;
end;
procedure InitializeWizard;
var
Width: Integer;
Height: Integer;
begin
VideoForm := CreateCustomForm;
VideoForm.Caption := 'Popup Video Window';
VideoForm.BorderStyle := bsNone;
VideoForm.FormStyle := fsStayOnTop;
VideoForm.Position := poScreenCenter;
VideoForm.OnShow := @OnVideoFormShow;
VideoForm.OnClose := @OnVideoFormClose;
if DSInitializeVideoFile('d:\Video.avi', VideoForm.Handle, Width,
Height, @OnMediaPlayerEvent)
then
begin
VideoForm.ClientWidth := Width;
VideoForm.ClientHeight := Height;
VideoForm.ShowModal;
end;
end;
procedure DeinitializeSetup;
begin
DSStopMediaPlay;
end;
答案 0 :(得分:2)
请事先与'd:\video.avi'
交换ExpandConstant('{tmp}\video.avi')
{/ 1}}。
或者,如果您想要将视频与设置一起分发(例如在DVD上)而不是嵌入到视频中,请使用ExtractTemporaryFile
代替{src}
,然后跳过{tmp}
。< / p>
第二个问题。缺少消息流失,这将允许向窗口所有者发送ExtractTemporaryFile
键盘和鼠标消息。在库的更新版本中,消息被分派给所有者,因此下载最新版本并添加如下代码以通过单击关闭视频窗口:
IVideoWindow