Inno Media Player
ビデオとオーディオの再生を InnoSetup ウィザードに埋め込むことができるプロジェクトを設立しました。これはテクノロジに基づいておりDirectShow
、使用するには少なくとも DirectX 9 が必要です。
すべての DirectShow コーデックをサポートしていることを除いbuilt-in formats
て、ターゲット ユーザーがエキゾチックなメディア フォーマット用のコーデックを持っている必要はなく、それらのコーデックをインストールする必要がないことを考慮する必要があります。これは、インストールの開始時にショーが過剰であり、ユーザーにとって不公平になるためです。
あなたが望んでいた透明度については、それをサポートするコーデックが見つかった場合、ポップアップ ウィンドウを透明にして、DirectShow レンダラーがレイヤード ウィンドウに描画できるようにすることができますが、コーデックとサンプル ビデオがなければできません。なし。
したがって、ウィザード フォームが表示される前に、ビデオの再生とともにポップアップ ウィンドウを表示するには、以下を使用できます。
Inno Media Player は Unicode ライブラリであるため、ANSI バージョンではなく、Unicode バージョンの InnoSetup でのみ使用できることに注意してください。ANSI バージョンの InnoSetup はサポートされていません...!
[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;
それが役立つことを願っています!