Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
[Files]
Source: InstallFiles\MusicFiles\*.*; Flags: DontCopy DeleteAfterInstall
[Code]
var
MusicButton, mp3Handle: HWND;
Function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean; external 'BASS_Init@files:BASS.dll stdcall delayload';
Function BASS_Start: Boolean; external 'BASS_Start@files:BASS.dll stdcall delayload';
Function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean; external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';
Function BASS_ChannelIsActive(handle: DWORD): Integer; external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload';
Function BASS_ChannelPause(handle: DWORD): Boolean; external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';
Function BASS_Pause: Boolean; external 'BASS_Pause@files:BASS.dll stdcall delayload';
Function BASS_Stop: Boolean; external 'BASS_Stop@files:BASS.dll stdcall delayload';
Function BASS_Free: Boolean; external 'BASS_Free@files:BASS.dll stdcall delayload';
Function BASS_StreamCreateFileLib(MEM: BOOL; fil: PAnsiChar; offset, length, flags: DWORD): DWORD; external 'BASS_StreamCreateFile@{tmp}\bp.dll stdcall delayload';
Function BASS_StreamCreateFile(MEM: BOOL; fil: AnsiString; offset, flags: DWORD): DWORD;
var
Size: Longint;
Buffer: ansistring;
begin
if MEM then begin
Size:= ExtractTemporaryFileSize(fil);
SetLength(Buffer,Size);
ExtractTemporaryFileToBuffer(fil, Cast{#defined UNICODE ? "Ansi" : ""}StringToInteger(Buffer));
Result:= BASS_StreamCreateFileLib(MEM, Buffer, 0, Size, flags);
end else Result:= BASS_StreamCreateFileLib(MEM, fil, offset, 0, flags);
end;
Procedure MusicButtonClick(hBtn:HWND);
begin
if BtnGetChecked(MusicButton) then BASS_ChannelPause(mp3Handle) else if BASS_ChannelIsActive(mp3Handle) = 3 then BASS_ChannelPlay(mp3Handle, False);
end;
Procedure InitMusic();
begin
if not FileExists(ExpandConstant('{tmp}\Bass.dll')) then ExtractTemporaryFile('Bass.dll');
if not FileExists(ExpandConstant('{tmp}\BP.dll')) then ExtractTemporaryFile('BP.dll');
MusicButton:= BtnCreate(WizardForm.Handle, ScaleX(10), ScaleY(320), ScaleX(35), ScaleY(35), 'MusicButton.png', 1, True);
BtnSetCursor(MusicButton, GetSysCursorHandle(32649));
BtnSetEvent(MusicButton, BtnClickEventID, CallBackAddr('MusicButtonClick'));
BtnSetVisibility(MusicButton, True);
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle:= BASS_StreamCreateFile(TRUE, 'Music.mp3', 0, 4);
BASS_Start;
BASS_ChannelPlay(mp3Handle, False);
end;
Procedure StopMusic();
begin
BASS_Stop;
BASS_Free;
end;
Procedure InitializeWizard();
begin
InitMusic();
end;
Procedure DeinitializeSetup();
begin
StopMusic();
end;
Не понял, честно говоряКод:[Files] Source: InstallFiles\MusicFiles\*.*; Flags: DontCopy DeleteAfterInstall [Code] var MusicButton, mp3Handle: HWND; Function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean; external 'BASS_Init@files:BASS.dll stdcall delayload'; Function BASS_Start: Boolean; external 'BASS_Start@files:BASS.dll stdcall delayload'; Function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean; external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload'; Function BASS_ChannelIsActive(handle: DWORD): Integer; external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload'; Function BASS_ChannelPause(handle: DWORD): Boolean; external 'BASS_ChannelPause@files:BASS.dll stdcall delayload'; Function BASS_Pause: Boolean; external 'BASS_Pause@files:BASS.dll stdcall delayload'; Function BASS_Stop: Boolean; external 'BASS_Stop@files:BASS.dll stdcall delayload'; Function BASS_Free: Boolean; external 'BASS_Free@files:BASS.dll stdcall delayload'; Function BASS_StreamCreateFileLib(MEM: BOOL; fil: PAnsiChar; offset, length, flags: DWORD): DWORD; external 'BASS_StreamCreateFile@{tmp}\bp.dll stdcall delayload'; Function BASS_StreamCreateFile(MEM: BOOL; fil: AnsiString; offset, flags: DWORD): DWORD; var Size: Longint; Buffer: ansistring; begin if MEM then begin Size:= ExtractTemporaryFileSize(fil); SetLength(Buffer,Size); ExtractTemporaryFileToBuffer(fil, Cast{#defined UNICODE ? "Ansi" : ""}StringToInteger(Buffer)); Result:= BASS_StreamCreateFileLib(MEM, Buffer, 0, Size, flags); end else Result:= BASS_StreamCreateFileLib(MEM, fil, offset, 0, flags); end; Procedure MusicButtonClick(hBtn:HWND); begin if BtnGetChecked(MusicButton) then BASS_ChannelPause(mp3Handle) else if BASS_ChannelIsActive(mp3Handle) = 3 then BASS_ChannelPlay(mp3Handle, False); end; Procedure InitMusic(); begin if not FileExists(ExpandConstant('{tmp}\Bass.dll')) then ExtractTemporaryFile('Bass.dll'); if not FileExists(ExpandConstant('{tmp}\BP.dll')) then ExtractTemporaryFile('BP.dll'); MusicButton:= BtnCreate(WizardForm.Handle, ScaleX(10), ScaleY(320), ScaleX(35), ScaleY(35), 'MusicButton.png', 1, True); BtnSetCursor(MusicButton, GetSysCursorHandle(32649)); BtnSetEvent(MusicButton, BtnClickEventID, CallBackAddr('MusicButtonClick')); BtnSetVisibility(MusicButton, True); BASS_Init(-1, 44100, 0, 0, 0); mp3Handle:= BASS_StreamCreateFile(TRUE, 'Music.mp3', 0, 4); BASS_Start; BASS_ChannelPlay(mp3Handle, False); end; Procedure StopMusic(); begin BASS_Stop; BASS_Free; end; Procedure InitializeWizard(); begin InitMusic(); end; Procedure DeinitializeSetup(); begin StopMusic(); end;
А воткнуть то как его в скрипт....Eisemann,
Сам то музыкальный модуль был у меня, мне интересно что делать, чтобы его вбить в основной скрипт.... Через #define или. #include?А воткнуть то как его в скрипт....
const
BtnClickEventID = 1;
type
#ifndef UNICODE
AnsiChar = Char;
#endif
TBtnEventProc = procedure(h:HWND);
var
MusicButton, mp3Handle: HWND;
function WrapBtnCallback(Callback: TBtnEventProc; ParamCount: Integer): Longword; external 'wrapcallbackaddr@{tmp}\CallbackCtrl.dll stdcall delayload';
function BtnGetChecked(h:HWND):boolean; external 'BtnGetChecked@{tmp}\botva2.dll stdcall delayload';
function BtnCreate(hParent:HWND; Left,Top,Width,Height:integer; FileName:PAnsiChar; ShadowWidth:integer; IsCheckBtn:boolean):HWND; external 'BtnCreate@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetCursor(h:HWND; hCur:Cardinal); external 'BtnSetCursor@{tmp}\botva2.dll stdcall delayload';
function GetSysCursorHandle(id:integer):Cardinal; external 'GetSysCursorHandle@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetEvent(h:HWND; EventID:integer; Event:Longword); external 'BtnSetEvent@{tmp}\botva2.dll stdcall delayload';
procedure BtnSetVisibility(h:HWND; Value:boolean); external 'BtnSetVisibility@{tmp}\botva2.dll stdcall delayload';
procedure gdipShutdown; external 'gdipShutdown@{tmp}\botva2.dll stdcall delayload';
procedure ImgApplyChanges(h:HWND); external 'ImgApplyChanges@{tmp}\botva2.dll stdcall delayload';
Function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean; external 'BASS_Init@files:BASS.dll stdcall delayload';
Function BASS_Start: Boolean; external 'BASS_Start@files:BASS.dll stdcall delayload';
Function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean; external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';
Function BASS_ChannelIsActive(handle: DWORD): Integer; external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload';
Function BASS_ChannelPause(handle: DWORD): Boolean; external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';
Function BASS_Pause: Boolean; external 'BASS_Pause@files:BASS.dll stdcall delayload';
Function BASS_Stop: Boolean; external 'BASS_Stop@files:BASS.dll stdcall delayload';
Function BASS_Free: Boolean; external 'BASS_Free@files:BASS.dll stdcall delayload';
Function BASS_StreamCreateFileLib(MEM: BOOL; fil: PAnsiChar; offset, length, flags: DWORD): DWORD; external 'BASS_StreamCreateFile@{tmp}\bp.dll stdcall delayload';
Function BASS_StreamCreateFile(MEM: BOOL; fil: AnsiString; offset, flags: DWORD): DWORD;
var
Size: Longint;
Buffer: ansistring;
begin
if MEM then begin
Size:= ExtractTemporaryFileSize(fil);
SetLength(Buffer,Size);
ExtractTemporaryFileToBuffer(fil, Cast{#defined UNICODE ? "Ansi" : ""}StringToInteger(Buffer));
Result:= BASS_StreamCreateFileLib(MEM, Buffer, 0, Size, flags);
end else Result:= BASS_StreamCreateFileLib(MEM, fil, offset, 0, flags);
end;
Procedure MusicButtonClick(hBtn:HWND);
begin
if BtnGetChecked(MusicButton) then BASS_ChannelPause(mp3Handle) else if BASS_ChannelIsActive(mp3Handle) = 3 then BASS_ChannelPlay(mp3Handle, False);
end;
function InitializeSetup(): Boolean;
begin
if not FileExists(ExpandConstant('{tmp}\Bass.dll')) then ExtractTemporaryFile('Bass.dll');
if not FileExists(ExpandConstant('{tmp}\BP.dll')) then ExtractTemporaryFile('BP.dll');
if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll');
if not FileExists(ExpandConstant('{tmp}\CallbackCtrl.dll')) then ExtractTemporaryFile('CallbackCtrl.dll');
if not FileExists(ExpandConstant('{tmp}\MusicButton.png')) then ExtractTemporaryFile('MusicButton.png');
Result:=True;
end;
Procedure InitializeWizard();
begin
#ifdef Music
MusicButton:=BtnCreate(WizardForm.Handle,ScaleX(10),ScaleY(320),ScaleX(35),ScaleY(35),ExpandConstant('{tmp}\MusicButton.png'),1,True);
BtnSetCursor(MusicButton, GetSysCursorHandle(32649));
BtnSetEvent(MusicButton, BtnClickEventID, CallBackAddr('MusicButtonClick'));
BtnSetVisibility(MusicButton, True);
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle:= BASS_StreamCreateFile(TRUE, 'Music.mp3', 0, 4);
BASS_Start;
BASS_ChannelPlay(mp3Handle, False);
ImgApplyChanges(WizardForm.Handle);
#endif
end;
Procedure StopMusic();
begin
BASS_Stop;
BASS_Free;
end;
Procedure DeinitializeSetup();
begin
StopMusic();
gdipShutdown;
end;
[/SPOILER]
Е получаетсяEisemann,
#define Music
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files]
Source: InstallFiles\MusicFiles\*.*; Flags: DontCopy DeleteAfterInstall
Код:const BtnClickEventID = 1; type #ifndef UNICODE AnsiChar = Char; #endif TBtnEventProc = procedure(h:HWND); var MusicButton, mp3Handle: HWND; function WrapBtnCallback(Callback: TBtnEventProc; ParamCount: Integer): Longword; external 'wrapcallbackaddr@{tmp}\CallbackCtrl.dll stdcall delayload'; function BtnGetChecked(h:HWND):boolean; external 'BtnGetChecked@{tmp}\botva2.dll stdcall delayload'; function BtnCreate(hParent:HWND; Left,Top,Width,Height:integer; FileName:PAnsiChar; ShadowWidth:integer; IsCheckBtn:boolean):HWND; external 'BtnCreate@{tmp}\botva2.dll stdcall delayload'; procedure BtnSetCursor(h:HWND; hCur:Cardinal); external 'BtnSetCursor@{tmp}\botva2.dll stdcall delayload'; function GetSysCursorHandle(id:integer):Cardinal; external 'GetSysCursorHandle@{tmp}\botva2.dll stdcall delayload'; procedure BtnSetEvent(h:HWND; EventID:integer; Event:Longword); external 'BtnSetEvent@{tmp}\botva2.dll stdcall delayload'; procedure BtnSetVisibility(h:HWND; Value:boolean); external 'BtnSetVisibility@{tmp}\botva2.dll stdcall delayload'; procedure gdipShutdown; external 'gdipShutdown@{tmp}\botva2.dll stdcall delayload'; procedure ImgApplyChanges(h:HWND); external 'ImgApplyChanges@{tmp}\botva2.dll stdcall delayload'; Function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean; external 'BASS_Init@files:BASS.dll stdcall delayload'; Function BASS_Start: Boolean; external 'BASS_Start@files:BASS.dll stdcall delayload'; Function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean; external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload'; Function BASS_ChannelIsActive(handle: DWORD): Integer; external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload'; Function BASS_ChannelPause(handle: DWORD): Boolean; external 'BASS_ChannelPause@files:BASS.dll stdcall delayload'; Function BASS_Pause: Boolean; external 'BASS_Pause@files:BASS.dll stdcall delayload'; Function BASS_Stop: Boolean; external 'BASS_Stop@files:BASS.dll stdcall delayload'; Function BASS_Free: Boolean; external 'BASS_Free@files:BASS.dll stdcall delayload'; Function BASS_StreamCreateFileLib(MEM: BOOL; fil: PAnsiChar; offset, length, flags: DWORD): DWORD; external 'BASS_StreamCreateFile@{tmp}\bp.dll stdcall delayload'; Function BASS_StreamCreateFile(MEM: BOOL; fil: AnsiString; offset, flags: DWORD): DWORD; var Size: Longint; Buffer: ansistring; begin if MEM then begin Size:= ExtractTemporaryFileSize(fil); SetLength(Buffer,Size); ExtractTemporaryFileToBuffer(fil, Cast{#defined UNICODE ? "Ansi" : ""}StringToInteger(Buffer)); Result:= BASS_StreamCreateFileLib(MEM, Buffer, 0, Size, flags); end else Result:= BASS_StreamCreateFileLib(MEM, fil, offset, 0, flags); end; Procedure MusicButtonClick(hBtn:HWND); begin if BtnGetChecked(MusicButton) then BASS_ChannelPause(mp3Handle) else if BASS_ChannelIsActive(mp3Handle) = 3 then BASS_ChannelPlay(mp3Handle, False); end; function InitializeSetup(): Boolean; begin if not FileExists(ExpandConstant('{tmp}\Bass.dll')) then ExtractTemporaryFile('Bass.dll'); if not FileExists(ExpandConstant('{tmp}\BP.dll')) then ExtractTemporaryFile('BP.dll'); if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll'); if not FileExists(ExpandConstant('{tmp}\CallbackCtrl.dll')) then ExtractTemporaryFile('CallbackCtrl.dll'); if not FileExists(ExpandConstant('{tmp}\MusicButton.png')) then ExtractTemporaryFile('MusicButton.png'); Result:=True; end; Procedure InitializeWizard(); begin #ifdef Music MusicButton:=BtnCreate(WizardForm.Handle,ScaleX(10),ScaleY(320),ScaleX(35),ScaleY(35),ExpandConstant('{tmp}\MusicButton.png'),1,True); BtnSetCursor(MusicButton, GetSysCursorHandle(32649)); BtnSetEvent(MusicButton, BtnClickEventID, CallBackAddr('MusicButtonClick')); BtnSetVisibility(MusicButton, True); BASS_Init(-1, 44100, 0, 0, 0); mp3Handle:= BASS_StreamCreateFile(TRUE, 'Music.mp3', 0, 4); BASS_Start; BASS_ChannelPlay(mp3Handle, False); ImgApplyChanges(WizardForm.Handle); #endif end; Procedure StopMusic(); begin BASS_Stop; BASS_Free; end; Procedure DeinitializeSetup(); begin StopMusic(); gdipShutdown; end; [/SPOILER]
Скрипт закос под Механиков, я его дорабатываю.... Со соайдшоу все внорма, а с музыкой допаСкинь весь свой скрипт сюда полностью...![]()
Скинь весь свой скрипт сюда полностью...![]()
Прости, не смогу скинуть, у меня с интернетом на ноуте проблемосыEisemann, ну они же в паблике - делай что хочешь.
Но скинь сюда свой скрипт, который ты дорабатываешь.
Так просто удобней будет, согласись
СпасибоEisemann,