Подскажите что означает ошибка: Exception: External exception EEDFADE.
На странице InstallingPage прописал кнопку минимизации инстала (сворачивание в нижний правый угол) и кнпку возврата в исходный размер + код слайдшоу с применением
isSlideShow.dll.
Проблема: isSlideShow работает нормально но после минимизации окна и далее
возврата окна в исходное состояние вылетает ошибка:
Exception: External exception EEDFADE с подсветкой строки:
ShowImage(piclist.strings[CurrentPicture - 1], 1, 1000);
Пример кода:
читать дальше »
[Setup]
AppName=Name
VersionInfoVersion=5.0
AppVerName=VerName
DefaultDirName={pf}\My program
ShowTasksTreeLines=true
OutputDir=.
[Languages]
Name: Ru; MessagesFile: compiler:Languages\Russian.isl
[Tasks]
Name: Soft; Description: Установка дополнительного программного обеспечения; GroupDescription: Дополнительное программное обеспечение:; Flags: unchecked
Name: Soft/DirectX; Description: Microsoft DirectX; Flags: unchecked
Name: Soft/vcredist_x86; Description: Microsoft Visual С++ 2005 Redistributable; Flags: unchecked
Name: Soft/vcredist_x64; Description: Microsoft Visual С++ 2005 Redistributable x64; Flags: unchecked; Check: IsWin64
[Files]
Source: {win}\help\*; DestDir: {app}\Files; AfterInstall: BtnDisable(); Flags: external recursesubdirs createallsubdirs;
Source: Image_1.png; DestDir: {tmp}; Flags: dontcopy
Source: Image_2.png; DestDir: {tmp}; Flags: dontcopy
Source: Image_3.png; DestDir: {tmp}; Flags: dontcopy
Source: isSlideShow.dll; DestDir: {tmp}; Flags: dontcopy
[Run]
Filename: {src}\DirectX\DXSETUP.exe; Parameters: /silent; Tasks: Soft/DirectX; StatusMsg: Установка DirectX;
Filename: {src}\MVC++2005\vcredist_x86.exe; Tasks: Soft/vcredist_x86; Parameters: /q; StatusMsg: Установка Microsoft Visual С++ 2005 Redistributable;
Filename: {src}\MVC++2005\vcredist_x64.exe; Tasks: Soft/vcredist_x64; Parameters: /q; StatusMsg: Установка Microsoft Visual С++ 2005 Redistributable x64;
[code]
///////////////////////// Кнопки "Min" и "Max" /////////////////////////
var
ResizeButton: TButton;
PageResized, Show: Boolean;
function GetSystemMetrics(nIndex:Integer):integer;
external 'GetSystemMetrics@user32.dll stdcall delayload';
procedure MinimizeInstallPage();
begin
WizardForm.MainPanel.Hide;
WizardForm.Bevel1.Hide;
WizardForm.Width:= ScaleX(395);
WizardForm.Height:= ScaleY(142);
WizardForm.Left:= GetSystemMetrics(16)-ScaleX(420);
WizardForm.Top:= GetSystemMetrics(17)-ScaleX(150);
WizardForm.InnerNotebook.Left:= ScaleX(10);
WizardForm.InnerNotebook.Top:= ScaleY(10);
WizardForm.InnerNotebook.Width:= ScaleX(370);
WizardForm.StatusLabel.Left:= ScaleX(0);
WizardForm.StatusLabel.Top:= ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:= ScaleX(0);
WizardForm.FileNameLabel.Top:= ScaleY(20);
WizardForm.FileNameLabel.Width:= WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:= ScaleY(40);
WizardForm.ProgressGauge.Width:= WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:= ScaleX(220);
WizardForm.CancelButton.Top:= ScaleY(80);
WizardForm.CancelButton.BringToFront;
ResizeButton.Left:= ScaleX(60);
ResizeButton.Top:= ScaleY(80);
ResizeButton.Caption:= 'Max.';
PageResized:= True;
end;
procedure ResumeInstallPage();
begin
WizardForm.Width:= ScaleX(503);
WizardForm.Height:= ScaleY(388);
WizardForm.Position:= poScreenCenter;
if Show then begin
WizardForm.MainPanel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(497), ScaleY(58));
WizardForm.MainPanel.Show;
WizardForm.Bevel1.Show;
end;
WizardForm.InnerNotebook.SetBounds(ScaleX(40), ScaleY(72), ScaleX(417), ScaleY(237));
WizardForm.StatusLabel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(16));
WizardForm.FilenameLabel.SetBounds(ScaleX(0), ScaleY(16), ScaleX(417), ScaleY(16));
WizardForm.ProgressGauge.SetBounds(ScaleX(0), ScaleY(42), ScaleX(417), ScaleY(21));
WizardForm.CancelButton.SetBounds(ScaleX(412), ScaleY(327), ScaleX(75), ScaleY(23));
ResizeButton.SetBounds(ScaleX(20), ScaleY(327),ScaleX(75), ScaleY(23));
ResizeButton.Caption:= 'Min.';
PageResized:= False;
end;
procedure ResizeButtonOnClick(Sender: TObject);
begin
If PageResized then
ResumeInstallPage
else
MinimizeInstallPage;
end;
procedure InitializeWizard1();
begin
ResizeButton:= TButton.Create(WizardForm);
ResizeButton.SetBounds(ScaleX(20), ScaleY(327),ScaleX(75), ScaleY(23));
ResizeButton.OnClick:= @ResizeButtonOnClick;
ResizeButton.Caption:= 'Min.';
ResizeButton.Hide;
ResizeButton.Parent:= WizardForm;
end;
procedure CurPageChanged1(CurPageID: Integer);
begin
ResizeButton.Hide;
case CurPageID of
wpInstalling:
begin
Show:= true;
ResizeButton.Show;
end;
wpFinished:
begin
Show:= false;
ResumeInstallPage;
end;
end;
end;
procedure BtnDisable();
begin
ResizeButton.Enabled := False;
end;
///////////////////////// isSlideShow v1.03 /////////////////////////
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
TimerID: LongWord;
CurrentPicture:integer;
PicList: TStringlist;
function WrapTimerProc(Callback:TProc; NumParam:integer): longword;
external 'WrapCallback@files:isslideshow.dll stdcall';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
//function GetSystemMetrics(nIndex:Integer):Integer;
//external 'GetSystemMetrics@user32.dll stdcall';
procedure InitializeSlideShow(Hwnd:Thandle; l,t,w,h:integer;Animate:boolean; Stretch:integer);
external 'InitializeSlideShow@files:isslideshow.dll stdcall';
procedure DeinitializeSlideShow;
external 'DeinitializeSlideShow@files:isslideshow.dll stdcall';
procedure ShowImage(ipath:PAnsiChar; Effect:integer; SpeedTransition: integer);
external 'ShowImage@files:isslideshow.dll stdcall';
procedure InitializeWizard2();
begin
PicList:=tstringlist.Create;
ExtractTemporaryFile('Image_1.png');
ExtractTemporaryFile('Image_2.png');
ExtractTemporaryFile('Image_3.png');;
piclist.add(ExpandConstant('{tmp}') + '\Image_1.png');
piclist.add(ExpandConstant('{tmp}') + '\Image_2.png');
piclist.add(ExpandConstant('{tmp}') + '\Image_3.png');
end;
procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
begin
CurrentPicture:=CurrentPicture+1;
if CurrentPicture=piclist.count+1 then CurrentPicture:=1;
ShowImage(piclist.strings[CurrentPicture - 1], 1, 1000);
end;
procedure CurPageChanged2(CurPageID: Integer);
begin
If CurPageID=wpInstalling then
begin
InitializeSlideShow(WizardForm.InstallingPage.Handle, 0, 131, ScaleX(417), ScaleY(101), true, 2);
CurrentPicture:=1;
ShowImage(piclist.strings[CurrentPicture-1], 1, 1000);
TimerID:=SetTimer(0, 0, 3000, WrapTimerProc(@OnTimer, 4)); //задержка 3000 мс (3 секунды)
end;
if CurPageID=wpFinished then
begin
KillTimer(0, TimerID);
DeinitializeSlideShow;
end;
end;
procedure DeinitializeSetup();
begin
DeinitializeSlideShow;
KillTimer(0, TimerID);
end;
//////////////
procedure InitializeWizard();
begin
InitializeWizard1();
InitializeWizard2();
end;
procedure CurPageChanged(CurPageID: Integer);
begin
CurPageChanged1(CurPageID);
CurPageChanged2(CurPageID);
end;
Сборка:
http://rghost.ru/58771778