Александр85
Новичок
Здравствуйте!
Как соединить эти 2 кода: один с шифрованием и автовводом пароля и второй для проигрывания трекерной XM музыки?
Пытался соединить - перестаёт работать автоввод пароля и соответственно программа не устанавливается, т.к. не может распаковать зашифрованные файлы! ((
Как соединить эти 2 кода: один с шифрованием и автовводом пароля и второй для проигрывания трекерной XM музыки?
Пытался соединить - перестаёт работать автоввод пароля и соответственно программа не устанавливается, т.к. не может распаковать зашифрованные файлы! ((
Код:
[Setup]
Encryption=Yes
Password=12345
[Code]
procedure InitializeWizard();
begin
WizardForm.PasswordEdit.Visible := False;
WizardForm.PasswordEdit.Text := '12345';
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
[Files]
Source: BASSMOD.dll; DestDir: "{tmp}"; Flags: dontcopy
Source: music.xm; DestDir: "{tmp}"; Flags: dontcopy
Source: BASSMOD.dll; DestDir: "{tmp}"; Flags: dontcopy
Source: music.xm; DestDir: "{tmp}"; Flags: dontcopy
Код:
const
BASS_MUSIC_RAMP = 1; // (только для Fast Tracker .xm)
BASS_MUSIC_RAMPS = 2; // (только для Fast Tracker .xm)
BASS_MUSIC_LOOP = 4; // повторение
BASS_MUSIC_FT2MOD = 16; // играть .MOD как FastTracker 2
BASS_MUSIC_PT1MOD = 32; // играть .MOD как ProTracker 1
BASS_MUSIC_SURROUND = 512; // звучание surround
BASS_MUSIC_SURROUND2 = 1024; // звучание surround (режим 2)
function BASSMOD_Init(device: Integer; freq, flags: DWORD): Boolean;
external 'BASSMOD_Init@files:BASSMOD.dll stdcall delayload';
procedure BASSMOD_MusicFree();
external 'BASSMOD_MusicFree@files:BASSMOD.dll stdcall delayload';
function BASSMOD_MusicLoad(mem: BOOL; f: PAnsiChar; offset: DWORD; length: DWORD; flags: DWORD): Boolean;
external 'BASSMOD_MusicLoad@files:BASSMOD.dll stdcall delayload';
function BASSMOD_MusicPlay(): Boolean;
external 'BASSMOD_MusicPlay@files:BASSMOD.dll stdcall delayload';
function BASSMOD_MusicStop(): Boolean;
external 'BASSMOD_MusicStop@files:BASSMOD.dll stdcall delayload';
function BASSMOD_MusicPause(): Boolean;
external 'BASSMOD_MusicPause@files:BASSMOD.dll stdcall delayload';
procedure BASSMOD_Free();
external 'BASSMOD_Free@files:BASSMOD.dll stdcall delayload';
var
cb:TCheckBox;
procedure PlayOnClick;
var
Name1: string;
begin
BASSMOD_MusicFree;
begin
if not BASSMOD_MusicPlay then
begin
Name1:=ExpandConstant('{tmp}\music.xm');
if BASSMOD_MusicLoad(FALSE, PAnsiChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND or 32 or 1) then
BASSMOD_MusicPlay;
end;
end;
end;
procedure cdClick(Sender: TObject);
begin
If cb.CHECKED then
PlayOnClick
else
BASSMOD_MusicStop;
end;
procedure InitializeWizard();
var
CancelButton: TButton;
begin
ExtractTemporaryFile(ExpandConstant('BASSMOD.dll'));
ExtractTemporaryFile(ExpandConstant('music.xm'));
if not BASSMOD_Init(-1,44100,0)
then
begin
//Выгружаем dll при неудачной инициализации
MsgBox('BASSMOD не смогла инициализироваться, проигрывание музыки невозможно.', mbError, MB_OK)
BASSMOD_Free;
end;
cb:=TCheckBox.Create(WizardForm);
cb.Parent:=WizardForm;
cb.Width:=ScaleX(220);
cb.Left:=ScaleY(10);
cb.Top:=ScaleY(330);
cb.CAPTION:='Вкл/Выкл музыку';
cb.ONCLICK:=@cdClick;
cb.checked:=true;
end;
procedure DeInitializeSetup();
begin
BASSMOD_MusicStop; //нужно для остановки проигрывания, она и так останавливается, но так нужно:
BASSMOD_Free(); //нужно для выгрузки библиотеки из памяти
end;