Проблема Не работает splash-заставка

tihiy_don

Старожил
Добрый день. Воспользовался примером по добавлению в инсталлятор сплеш-заставки. Попробовал на том примере прям в инно запустил, инсталл запускается все норм, тайминги все есть, за исключением одного - не показывается изображение, хотя все пути верно прописываю. Брал аналогичные примеры, вставлял содержимое процедуры runsplash прям в процедуруInitializeWizard(); но не помогло, так же картинка не отображается.

Кто-то сталкивался с подобной проблемой? У меня система Windows 10.

Вот код:
code_language.pascal:
; Время проявления картинки Splash (1500мс = 1,5 сек)
#define SplS "1500"
; Время показа картинки Splash (3000мс = 3 сек)
#define SplR "3000"
; Время затухания картинки Splash (1500мс = 1,5 сек)
#define SplE "1500"

[Setup]
AppName=Splash
AppVerName=Splash
DefaultDirName={pf}\Splash
OutputDir=.

[Files]
Source: "isgsg.dll"; Flags: "DontCopy";
Source: "splash.png"; Flags: "DontCopy";

[Code]
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

procedure RunSplash();
begin
 ExtractTemporaryFile('splash.png');
 ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\splash.png',{#SplS},{#SplR},{#SplE},0,255,False,$FFFFFF,10);
end;

procedure InitializeWizard;
begin
  RunSplash();
end;
 

Вложения

SBalykov

Старожил
tihiy_don
Вы запускаете процедуру ShowSplashScreen, в то время, когда WizardForm еще не создан.
Необходимо поправить:

procedure RunSplash();
begin
ExtractTemporaryFile('splash.png');
ShowSplashScreen(Application.Handle,ExpandConstant('{tmp}\splash.png'), {#SplS}, {#SplR}, {#SplE}, 0,255, False, $FFFFFF, 10);
end;
 

tihiy_don

Старожил
@SBalykov, а теперь пишет что неизвестный индификатор. Мне необходимо где-то прописать ещё что-то?
1608379977586.png
 

JEKE24

Новичок
Код:
[Setup]
AppName=Splash
AppVerName=Splash
DefaultDirName={pf}\Splash
OutputDir=.

[Files]
Source: "isgsg.dll"; Flags: "DontCopy";
Source: "splash.png"; Flags: "DontCopy";

[Code]
procedure ShowSplashScreen(p1:HWND;p2:AnsiString;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer);
external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

procedure RunSplash();
begin
  ExtractTemporaryFile('Splash.png');
  ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}\Splash.png'),1000,3000,1000,0,255,True,$FFFFFF,10);
end;

procedure InitializeWizard;
begin
  RunSplash();
end;
 

tihiy_don

Старожил
Спасибо, работает. Получается, тип переменной повлиял?

Код:
p2:AnsiString
 
Сверху