こんにちは親愛なるコミュニティ...
Inno Setup のビデオ スプラッシュ スクリーンに関するこのトピックを見たところです。
ビデオ ファイル (アルファ付き) をスプラッシュ スクリーンとして使用しますか?
TLama (Inno Media Player の作成者) によって提示されたサンプル コードは素晴らしいですが、少し問題があります。それだけです。コードで指定されているスプラッシュ ビデオ ファイルには、d:\Video.avi のような絶対パスがあります。 d:\Video.avi のような他のコンピュータの絶対パスへのセットアップ プログラムが機能しなくなりました...
したがって、作者 ( TLama ) にこのスクリプトを修正して、動画ファイルを {src} または {tmp} のような相対パスでスプラッシュするように依頼しています。
著者に尋ねたい 2 番目のリビジョンは次のとおりです。
ウィンドウのクライアント領域をクリックしてビデオ再生を閉じる機能を実装したい...上記のサンプル コードでは使用できません...
最後に、TLama (Inno Media Player の作成者) に、次のコードに要求された 2 つのリビジョンを実装するように依頼しています。
[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;