Помогите изменить код, пожалуйста!

Александр85

Новичок
Здравствуйте!

Помогите изменить код, пожалуйста!
Код:
  [Setup]
AppName=Bass Audio Project
AppVersion=1.0
DefaultDirName={pf}\Bass Audio Project

[Files]
Source: Bass.dll; Flags: dontcopy
Source: AudioFile.mp3; Flags: dontcopy


[Code]
const
  BASS_SAMPLE_LOOP = 4;
  BASS_ACTIVE_STOPPED = 0;
  BASS_ACTIVE_PLAYING = 1;
  BASS_ACTIVE_STALLED = 2;
  BASS_ACTIVE_PAUSED  = 3;
  BASS_UNICODE = $80000000;
  BASS_CONFIG_GVOL_STREAM = 5;
const
  #ifndef UNICODE
    EncodingFlag = 0;
  #else
    EncodingFlag = BASS_UNICODE;
  #endif
type
  HSTREAM = DWORD;

function BASS_Init(device: LongInt; freq, flags: DWORD;
  win: HWND; clsid: Cardinal): BOOL;
  external 'BASS_Init@files:bass.dll stdcall';
function BASS_StreamCreateFile(mem: BOOL; f: string; offset1: DWORD;
  offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): HSTREAM;
  external 'BASS_StreamCreateFile@files:bass.dll stdcall';
function BASS_Start: BOOL;
  external 'BASS_Start@files:bass.dll stdcall';
function BASS_Pause: BOOL;
  external 'BASS_Pause@files:bass.dll stdcall';
function BASS_Stop(): Boolean;
  external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
  external 'BASS_ChannelPlay@files:bass.dll stdcall';
function BASS_SetConfig(option: DWORD; value: DWORD ): BOOL;
  external 'BASS_SetConfig@files:bass.dll stdcall';
function BASS_ChannelIsActive(handle: DWORD): DWORD;
  external 'BASS_ChannelIsActive@files:bass.dll stdcall';
function BASS_Free: BOOL;
  external 'BASS_Free@files:bass.dll stdcall';

var
  SoundStream: HSTREAM;
  PauseResumePlayButton: TNewButton;
  StopButton: TNewButton;

procedure ResumeButtonClick(Sender: TObject); forward;

procedure PauseButtonClick(Sender: TObject);
begin
  if BASS_Pause then
  begin
    PauseResumePlayButton.Caption := 'Resume';
    PauseResumePlayButton.OnClick := @ResumeButtonClick;
  end;
end;

procedure ResumeButtonClick(Sender: TObject);
begin
  if BASS_start then
  begin
    PauseResumePlayButton.Caption := 'Pause';
    PauseResumePlayButton.OnClick := @PauseButtonClick;
  end;
end;

procedure PlayButtonClick(Sender: TObject);
begin
  if BASS_Start then
  begin
    PauseResumePlayButton.Caption := 'Pause';
    PauseResumePlayButton.OnClick := @PauseButtonClick;
  end;
end;


procedure StopButtonClick(Sender: TObject);
begin
  if BASS_Stop then
  begin
    PauseResumePlayButton.Caption := 'Play';
    PauseResumePlayButton.OnClick := @PlayButtonClick;
  end;
       begin
       BASS_Free;
       end;
end;

procedure InitializeWizard();
begin
  ExtractTemporaryFile('AudioFile.mp3');
  if BASS_Init(-1, 44100, 0, 0, 0) then
  begin
    SoundStream :=
      BASS_StreamCreateFile(
        False, ExpandConstant('{tmp}\AudioFile.mp3'), 0, 0, 0, 0,
        EncodingFlag or BASS_SAMPLE_LOOP);
    BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, 2500);
    BASS_ChannelPlay(SoundStream, False);

    StopButton := TNewButton.Create(WizardForm);
    StopButton.Parent := WizardForm;
    StopButton.Left :=
      WizardForm.ClientWidth -
      WizardForm.CancelButton.Left - WizardForm.CancelButton.Width;
    StopButton.Top := WizardForm.CancelButton.Top;
    StopButton.Width :=  WizardForm.CancelButton.Width;
    StopButton.Height := WizardForm.CancelButton.Height;
    StopButton.Caption := 'Stop';
    StopButton.OnClick := @StopButtonClick;

    PauseResumePlayButton := TNewButton.Create(WizardForm);
    PauseResumePlayButton.Parent := WizardForm;
    PauseResumePlayButton.Left :=
      WizardForm.ClientWidth -
      WizardForm.NextButton.Left - WizardForm.NextButton.Width;
    PauseResumePlayButton.Top := WizardForm.CancelButton.Top;
    PauseResumePlayButton.Width :=  WizardForm.CancelButton.Width;
    PauseResumePlayButton.Height := WizardForm.CancelButton.Height;
    PauseResumePlayButton.Caption := 'Pause';
    PauseResumePlayButton.OnClick := @PauseButtonClick;
  end;
end;

procedure DeinitializeSetup;
begin
  BASS_Free;
end;
Код для проигрывания музыки + кнопки управления, но мне не нужна кнопка Стоп! нужно просто Вкл/Выкл музыку и чтобы она была СЛЕВА вместо СТОП, ОДНА КНОПКА СЛЕВА - вместо кнопки СТОП!
Т.е. если музыка играет - на кнопке написано "Выкл музыку," если пользователь нажимает на неё, то на кнопке написано будет "Вкл музыку" и всё, больше ничего НЕ надо вообще! И эта кнопка чтобы была по максимуму слева в нижнем левом углу окна инсталлятора, там где сейчас в коде кнопка СТОП. Кнопку СТОП убрать вообще! Одна кнопка - музыка играет на ней написано "Выкл", музыка не играет на ней написано "Вкл" - всё! А при нажатии соответственно надпись меняется на противоположную и музыка, либо включается, либо выключается!
Не знаю, зачем придумали в этом коде 2 кнопки отдельно? )) Не нравится пользователю музыка выключил и всё! Захотел послушать музыку - включил!

P.S. Можно ли сделать так, чтобы изначально музыка проигрывалась с громкостью ПОТИШЕ, ну там с громкостью в 30-50%, а не по максимуму?
 
Последнее редактирование:

Andreo Fadio

Старожил
Т.е. если музыка играет - на кнопке написано "Выкл музыку," если пользователь нажимает на неё, то на кнопке написано будет "Вкл музыку"
в FAQ по Inno Seup есть такой пример: Ссылка на пост
Не мешало бы почитать информацию на форуме

В InitializeWizard() добавьте:
BASS_SetVolume(30); //громкость 30 из 100
и в итоге слови вылет ошибки (неизвестный индификатор), потому как у него нет зарегистрированной данной функции :)
 

Александр85

Новичок
в FAQ по Inno Seup есть такой пример: Ссылка на пост
Не мешало бы почитать информацию на форуме


и в итоге слови вылет ошибки (неизвестный индификатор), потому как у него нет зарегистрированной данной функции :)
1. Спасибо за скрипт! А с XM-форматом вместо mp3 - прокатит?
2. А как надо? Чтобы не было ошибки? Нужно просто чтобы музыка не орала на максимум ))
 

HandyMan

Новичок
Код:
 [Setup]
AppName=Bass Audio Project
AppVersion=1.0
DefaultDirName={pf}\Bass Audio Project

[Files]
Source: Bass.dll; Flags: dontcopy
Source: AudioFile.mp3; Flags: dontcopy


[Code]
const
  BASS_SAMPLE_LOOP = 4;
  BASS_ACTIVE_STOPPED = 0;
  BASS_ACTIVE_PLAYING = 1;
  BASS_ACTIVE_STALLED = 2;
  BASS_ACTIVE_PAUSED  = 3;
  BASS_UNICODE = $80000000;
  BASS_CONFIG_GVOL_STREAM = 5;
const
  #ifndef UNICODE
    EncodingFlag = 0;
  #else
    EncodingFlag = BASS_UNICODE;
  #endif
type
  HSTREAM = DWORD;

function BASS_Init(device: LongInt; freq, flags: DWORD;
  win: HWND; clsid: Cardinal): BOOL;
  external 'BASS_Init@files:bass.dll stdcall';
function BASS_StreamCreateFile(mem: BOOL; f: string; offset1: DWORD;
  offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): HSTREAM;
  external 'BASS_StreamCreateFile@files:bass.dll stdcall';
function BASS_Start: BOOL;
  external 'BASS_Start@files:bass.dll stdcall';
function BASS_Pause: BOOL;
  external 'BASS_Pause@files:bass.dll stdcall';
function BASS_Stop(): Boolean;
  external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
  external 'BASS_ChannelPlay@files:bass.dll stdcall';
function BASS_SetConfig(option: DWORD; value: DWORD ): BOOL;
  external 'BASS_SetConfig@files:bass.dll stdcall';
function BASS_ChannelIsActive(handle: DWORD): DWORD;
  external 'BASS_ChannelIsActive@files:bass.dll stdcall';
//Here
function BASS_SetVolume(volume: DWORD): BOOL;
  external 'BASS_SetVolume@files:bass.dll stdcall delayload';

function BASS_Free: BOOL;
  external 'BASS_Free@files:bass.dll stdcall';

var
  SoundStream: HSTREAM;
  PauseResumePlayButton: TNewButton;
  StopButton: TNewButton;

procedure ResumeButtonClick(Sender: TObject); forward;

procedure PauseButtonClick(Sender: TObject);
begin
  if BASS_Pause then
  begin
    PauseResumePlayButton.Caption := 'Resume';
    PauseResumePlayButton.OnClick := @ResumeButtonClick;
  end;
end;

procedure ResumeButtonClick(Sender: TObject);
begin
  if BASS_start then
  begin
    PauseResumePlayButton.Caption := 'Pause';
    PauseResumePlayButton.OnClick := @PauseButtonClick;
  end;
end;

procedure PlayButtonClick(Sender: TObject);
begin
  if BASS_Start then
  begin
    PauseResumePlayButton.Caption := 'Pause';
    PauseResumePlayButton.OnClick := @PauseButtonClick;
  end;
end;


procedure StopButtonClick(Sender: TObject);
begin
  if BASS_Stop then
  begin
    PauseResumePlayButton.Caption := 'Play';
    PauseResumePlayButton.OnClick := @PlayButtonClick;
  end;
       begin
       BASS_Free;
       end;
end;

procedure InitializeWizard();
begin
  ExtractTemporaryFile('AudioFile.mp3');
  if BASS_Init(-1, 44100, 0, 0, 0) then
  begin
    SoundStream :=
      BASS_StreamCreateFile(
        False, ExpandConstant('{tmp}\AudioFile.mp3'), 0, 0, 0, 0,
        EncodingFlag or BASS_SAMPLE_LOOP);
     BASS_ChannelPlay(SoundStream, False);

// this delete or comment
//    BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, 2500);

    // Insert Here
    BASS_SetVolume(0.5);
 

    StopButton := TNewButton.Create(WizardForm);
    StopButton.Parent := WizardForm;
    StopButton.Left :=
      WizardForm.ClientWidth -
      WizardForm.CancelButton.Left - WizardForm.CancelButton.Width;
    StopButton.Top := WizardForm.CancelButton.Top;
    StopButton.Width :=  WizardForm.CancelButton.Width;
    StopButton.Height := WizardForm.CancelButton.Height;
    StopButton.Caption := 'Stop';
    StopButton.OnClick := @StopButtonClick;

    PauseResumePlayButton := TNewButton.Create(WizardForm);
    PauseResumePlayButton.Parent := WizardForm;
    PauseResumePlayButton.Left :=
      WizardForm.ClientWidth -
      WizardForm.NextButton.Left - WizardForm.NextButton.Width;
    PauseResumePlayButton.Top := WizardForm.CancelButton.Top;
    PauseResumePlayButton.Width :=  WizardForm.CancelButton.Width;
    PauseResumePlayButton.Height := WizardForm.CancelButton.Height;
    PauseResumePlayButton.Caption := 'Pause';
    PauseResumePlayButton.OnClick := @PauseButtonClick;
  end;
end;

procedure DeinitializeSetup;
begin
  BASS_Free;
end;
 
Последнее редактирование:

Andreo Fadio

Старожил
@Александр85, вот ваш переделанный пример (одна кнопка + меняющиеся надписи):
*Громкость воспроизведения подписано где регулировать.
Код:
[Setup]
AppName=Bass Audio Project
AppVersion=1.0
DefaultDirName={pf}\Bass Audio Project

[Files]
Source: Bass.dll; Flags: dontcopy
Source: AudioFile.mp3; Flags: dontcopy

[Code]
const
  BASS_SAMPLE_LOOP = 4;
  BASS_ACTIVE_STOPPED = 0;
  BASS_ACTIVE_PLAYING = 1;
  BASS_ACTIVE_STALLED = 2;
  BASS_ACTIVE_PAUSED  = 3;
  BASS_UNICODE = $80000000;
  BASS_CONFIG_GVOL_STREAM = 5;
const
  #ifndef UNICODE
    EncodingFlag = 0;
  #else
    EncodingFlag = BASS_UNICODE;
  #endif
type
  HSTREAM = DWORD;

function BASS_Init(device: LongInt; freq, flags: DWORD;
  win: HWND; clsid: Cardinal): BOOL;
  external 'BASS_Init@files:bass.dll stdcall';
function BASS_StreamCreateFile(mem: BOOL; f: string; offset1: DWORD;
  offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): HSTREAM;
  external 'BASS_StreamCreateFile@files:bass.dll stdcall';
function BASS_Start: BOOL;
  external 'BASS_Start@files:bass.dll stdcall';
function BASS_Pause: BOOL;
  external 'BASS_Pause@files:bass.dll stdcall';
function BASS_Stop(): Boolean;
  external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
  external 'BASS_ChannelPlay@files:bass.dll stdcall';
function BASS_SetConfig(option: DWORD; value: DWORD ): BOOL;
  external 'BASS_SetConfig@files:bass.dll stdcall';
function BASS_ChannelIsActive(handle: DWORD): DWORD;
  external 'BASS_ChannelIsActive@files:bass.dll stdcall';
function BASS_Free: BOOL;
  external 'BASS_Free@files:bass.dll stdcall';
function BASS_ChannelSetAttribute(handle: DWORD; Flags: DWORD; Value: Single): Boolean;
  external 'BASS_ChannelSetAttribute@files:bass.dll stdcall';

var
  SoundStream: HSTREAM;
  PauseResumePlayButton: TNewButton;
  BASS_Volume: DWORD;

procedure PlayButtonClick(Sender: TObject);
begin
  case TNewButton(Sender).Caption of
  'Музыка.Выкл': begin
   BASS_Start;
   PauseResumePlayButton.Caption := 'Музыка.Вкл';
  end;
  'Музыка.Вкл': begin
   BASS_Pause;
   PauseResumePlayButton.Caption := 'Музыка.Выкл';
  end;
  end;
end;

procedure InitializeWizard();
begin
  ExtractTemporaryFile('AudioFile.mp3');
  if BASS_Init(-1, 44100, 0, 0, 0) then
  begin
    //Задаем громкость слышимой музыки
    BASS_Volume := 50;

    SoundStream := BASS_StreamCreateFile(False, ExpandConstant('{tmp}\AudioFile.mp3'), 0, 0, 0, 0, EncodingFlag or BASS_SAMPLE_LOOP);
    BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, 2500);
    BASS_ChannelPlay(SoundStream, False);
    BASS_ChannelSetAttribute(SoundStream, 2, BASS_Volume/100.0);

    PauseResumePlayButton := TNewButton.Create(WizardForm);
    PauseResumePlayButton.Parent := WizardForm;
    PauseResumePlayButton.Left := ScaleX(10);
    PauseResumePlayButton.Top := WizardForm.CancelButton.Top;
    PauseResumePlayButton.Width :=  WizardForm.CancelButton.Width + ScaleX(10);
    PauseResumePlayButton.Height := WizardForm.CancelButton.Height;
    PauseResumePlayButton.Caption := 'Музыка.Вкл';
    PauseResumePlayButton.OnClick := @PlayButtonClick;
  end;
end;

procedure DeinitializeSetup;
begin
  BASS_Free;
end;

А с XM-форматом вместо mp3 - прокатит?
Не знаю, мне проверять не на чем (я про формат файла .xm ничего не знаю :) )
 

Александр85

Новичок
@Александр85, вот ваш переделанный пример (одна кнопка + меняющиеся надписи):
*Громкость воспроизведения подписано где регулировать.
Код:
[Setup]
AppName=Bass Audio Project
AppVersion=1.0
DefaultDirName={pf}\Bass Audio Project

[Files]
Source: Bass.dll; Flags: dontcopy
Source: AudioFile.mp3; Flags: dontcopy

[Code]
const
  BASS_SAMPLE_LOOP = 4;
  BASS_ACTIVE_STOPPED = 0;
  BASS_ACTIVE_PLAYING = 1;
  BASS_ACTIVE_STALLED = 2;
  BASS_ACTIVE_PAUSED  = 3;
  BASS_UNICODE = $80000000;
  BASS_CONFIG_GVOL_STREAM = 5;
const
  #ifndef UNICODE
    EncodingFlag = 0;
  #else
    EncodingFlag = BASS_UNICODE;
  #endif
type
  HSTREAM = DWORD;

function BASS_Init(device: LongInt; freq, flags: DWORD;
  win: HWND; clsid: Cardinal): BOOL;
  external 'BASS_Init@files:bass.dll stdcall';
function BASS_StreamCreateFile(mem: BOOL; f: string; offset1: DWORD;
  offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): HSTREAM;
  external 'BASS_StreamCreateFile@files:bass.dll stdcall';
function BASS_Start: BOOL;
  external 'BASS_Start@files:bass.dll stdcall';
function BASS_Pause: BOOL;
  external 'BASS_Pause@files:bass.dll stdcall';
function BASS_Stop(): Boolean;
  external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
  external 'BASS_ChannelPlay@files:bass.dll stdcall';
function BASS_SetConfig(option: DWORD; value: DWORD ): BOOL;
  external 'BASS_SetConfig@files:bass.dll stdcall';
function BASS_ChannelIsActive(handle: DWORD): DWORD;
  external 'BASS_ChannelIsActive@files:bass.dll stdcall';
function BASS_Free: BOOL;
  external 'BASS_Free@files:bass.dll stdcall';
function BASS_ChannelSetAttribute(handle: DWORD; Flags: DWORD; Value: Single): Boolean;
  external 'BASS_ChannelSetAttribute@files:bass.dll stdcall';

var
  SoundStream: HSTREAM;
  PauseResumePlayButton: TNewButton;
  BASS_Volume: DWORD;

procedure PlayButtonClick(Sender: TObject);
begin
  case TNewButton(Sender).Caption of
  'Музыка.Выкл': begin
   BASS_Start;
   PauseResumePlayButton.Caption := 'Музыка.Вкл';
  end;
  'Музыка.Вкл': begin
   BASS_Pause;
   PauseResumePlayButton.Caption := 'Музыка.Выкл';
  end;
  end;
end;

procedure InitializeWizard();
begin
  ExtractTemporaryFile('AudioFile.mp3');
  if BASS_Init(-1, 44100, 0, 0, 0) then
  begin
    //Задаем громкость слышимой музыки
    BASS_Volume := 50;

    SoundStream := BASS_StreamCreateFile(False, ExpandConstant('{tmp}\AudioFile.mp3'), 0, 0, 0, 0, EncodingFlag or BASS_SAMPLE_LOOP);
    BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, 2500);
    BASS_ChannelPlay(SoundStream, False);
    BASS_ChannelSetAttribute(SoundStream, 2, BASS_Volume/100.0);

    PauseResumePlayButton := TNewButton.Create(WizardForm);
    PauseResumePlayButton.Parent := WizardForm;
    PauseResumePlayButton.Left := ScaleX(10);
    PauseResumePlayButton.Top := WizardForm.CancelButton.Top;
    PauseResumePlayButton.Width :=  WizardForm.CancelButton.Width + ScaleX(10);
    PauseResumePlayButton.Height := WizardForm.CancelButton.Height;
    PauseResumePlayButton.Caption := 'Музыка.Вкл';
    PauseResumePlayButton.OnClick := @PlayButtonClick;
  end;
end;

procedure DeinitializeSetup;
begin
  BASS_Free;
end;


Не знаю, мне проверять не на чем (я про формат файла .xm ничего не знаю :) )
Bassmod.dll сюда можно "прикрутить" вместо Bass.dll - "примет" код?
 
Последнее редактирование:

Александр85

Новичок
залейте на файлообменник (к примеру на DropMeFiles ) пример файла ....xm и библиотеку bassmod.dll и скиньте ссылку
Как к этому скрипту добавить шифрование и автоввод пароля - уже задавал подобный вопрос никто не помог (( Поможете? Помогите, пожалуйста! Соедините ваш скрипт выше и:
[Setup]
Encryption=Yes
Password=12345

Код:
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;
 

Andreo Fadio

Старожил
Как к этому скрипту добавить шифрование и автоввод пароля - уже задавал подобный вопрос никто не помог (( Поможете?
Чего там помогать... :D
Код:
[Setup]
AppName=Bass Audio Project
AppVersion=1.0
DefaultDirName={pf}\Bass Audio Project
Encryption=Yes
Password=12345

[Files]
Source: Bass.dll; Flags: dontcopy noencryption
Source: AudioFile.mp3; Flags: dontcopy noencryption

[Code]
const
  BASS_SAMPLE_LOOP = 4;
  BASS_ACTIVE_STOPPED = 0;
  BASS_ACTIVE_PLAYING = 1;
  BASS_ACTIVE_STALLED = 2;
  BASS_ACTIVE_PAUSED  = 3;
  BASS_UNICODE = $80000000;
  BASS_CONFIG_GVOL_STREAM = 5;
const
  #ifndef UNICODE
    EncodingFlag = 0;
  #else
    EncodingFlag = BASS_UNICODE;
  #endif
type
  HSTREAM = DWORD;

function BASS_Init(device: LongInt; freq, flags: DWORD;
  win: HWND; clsid: Cardinal): BOOL;
  external 'BASS_Init@files:bass.dll stdcall';
function BASS_StreamCreateFile(mem: BOOL; f: string; offset1: DWORD;
  offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): HSTREAM;
  external 'BASS_StreamCreateFile@files:bass.dll stdcall';
function BASS_Start: BOOL;
  external 'BASS_Start@files:bass.dll stdcall';
function BASS_Pause: BOOL;
  external 'BASS_Pause@files:bass.dll stdcall';
function BASS_Stop(): Boolean;
  external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
  external 'BASS_ChannelPlay@files:bass.dll stdcall';
function BASS_SetConfig(option: DWORD; value: DWORD ): BOOL;
  external 'BASS_SetConfig@files:bass.dll stdcall';
function BASS_ChannelIsActive(handle: DWORD): DWORD;
  external 'BASS_ChannelIsActive@files:bass.dll stdcall';
function BASS_Free: BOOL;
  external 'BASS_Free@files:bass.dll stdcall';
function BASS_ChannelSetAttribute(handle: DWORD; Flags: DWORD; Value: Single): Boolean;
  external 'BASS_ChannelSetAttribute@files:bass.dll stdcall';

var
  SoundStream: HSTREAM;
  PauseResumePlayButton: TNewButton;
  BASS_Volume: DWORD;

procedure PlayButtonClick(Sender: TObject);
begin
  case TNewButton(Sender).Caption of
  'Музыка.Выкл': begin
   BASS_Start;
   PauseResumePlayButton.Caption := 'Музыка.Вкл';
  end;
  'Музыка.Вкл': begin
   BASS_Pause;
   PauseResumePlayButton.Caption := 'Музыка.Выкл';
  end;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
  WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;

procedure InitializeWizard();
begin
  ExtractTemporaryFile('AudioFile.mp3');
  if BASS_Init(-1, 44100, 0, 0, 0) then
  begin
    //Задаем громкость слышимой музыки
    BASS_Volume := 90;

    SoundStream := BASS_StreamCreateFile(False, ExpandConstant('{tmp}\AudioFile.mp3'), 0, 0, 0, 0, EncodingFlag or BASS_SAMPLE_LOOP);
    BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, 2500);
    BASS_ChannelPlay(SoundStream, False);
    BASS_ChannelSetAttribute(SoundStream, 2, BASS_Volume/100.0);

    PauseResumePlayButton := TNewButton.Create(WizardForm);
    PauseResumePlayButton.Parent := WizardForm;
    PauseResumePlayButton.Left := ScaleX(10);
    PauseResumePlayButton.Top := WizardForm.CancelButton.Top;
    PauseResumePlayButton.Width :=  WizardForm.CancelButton.Width + ScaleX(10);
    PauseResumePlayButton.Height := WizardForm.CancelButton.Height;
    PauseResumePlayButton.Caption := 'Музыка.Вкл';
    PauseResumePlayButton.OnClick := @PlayButtonClick;
  end;
  WizardForm.PasswordEdit.Visible := False;
  WizardForm.PasswordEdit.Text := '12345';
end;

procedure DeinitializeSetup;
begin
  BASS_Free;
end;
Вам бы явно прежде чем использовать такое шифрование справку по Inno Setup открыть и почитать для начала как оно работает (тем более на сайте есть русская справка по inno).
 
Последнее редактирование:

Александр85

Новичок
Чего там помогать... :D
Код:
[Setup]
AppName=Bass Audio Project
AppVersion=1.0
DefaultDirName={pf}\Bass Audio Project
Encryption=Yes
Password=12345

[Files]
Source: Bass.dll; Flags: dontcopy noencryption
Source: AudioFile.mp3; Flags: dontcopy noencryption

[Code]
const
  BASS_SAMPLE_LOOP = 4;
  BASS_ACTIVE_STOPPED = 0;
  BASS_ACTIVE_PLAYING = 1;
  BASS_ACTIVE_STALLED = 2;
  BASS_ACTIVE_PAUSED  = 3;
  BASS_UNICODE = $80000000;
  BASS_CONFIG_GVOL_STREAM = 5;
const
  #ifndef UNICODE
    EncodingFlag = 0;
  #else
    EncodingFlag = BASS_UNICODE;
  #endif
type
  HSTREAM = DWORD;

function BASS_Init(device: LongInt; freq, flags: DWORD;
  win: HWND; clsid: Cardinal): BOOL;
  external 'BASS_Init@files:bass.dll stdcall';
function BASS_StreamCreateFile(mem: BOOL; f: string; offset1: DWORD;
  offset2: DWORD; length1: DWORD; length2: DWORD; flags: DWORD): HSTREAM;
  external 'BASS_StreamCreateFile@files:bass.dll stdcall';
function BASS_Start: BOOL;
  external 'BASS_Start@files:bass.dll stdcall';
function BASS_Pause: BOOL;
  external 'BASS_Pause@files:bass.dll stdcall';
function BASS_Stop(): Boolean;
  external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
  external 'BASS_ChannelPlay@files:bass.dll stdcall';
function BASS_SetConfig(option: DWORD; value: DWORD ): BOOL;
  external 'BASS_SetConfig@files:bass.dll stdcall';
function BASS_ChannelIsActive(handle: DWORD): DWORD;
  external 'BASS_ChannelIsActive@files:bass.dll stdcall';
function BASS_Free: BOOL;
  external 'BASS_Free@files:bass.dll stdcall';
function BASS_ChannelSetAttribute(handle: DWORD; Flags: DWORD; Value: Single): Boolean;
  external 'BASS_ChannelSetAttribute@files:bass.dll stdcall';

var
  SoundStream: HSTREAM;
  PauseResumePlayButton: TNewButton;
  BASS_Volume: DWORD;

procedure PlayButtonClick(Sender: TObject);
begin
  case TNewButton(Sender).Caption of
  'Музыка.Выкл': begin
   BASS_Start;
   PauseResumePlayButton.Caption := 'Музыка.Вкл';
  end;
  'Музыка.Вкл': begin
   BASS_Pause;
   PauseResumePlayButton.Caption := 'Музыка.Выкл';
  end;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
  WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;

procedure InitializeWizard();
begin
  ExtractTemporaryFile('AudioFile.mp3');
  if BASS_Init(-1, 44100, 0, 0, 0) then
  begin
    //Задаем громкость слышимой музыки
    BASS_Volume := 90;

    SoundStream := BASS_StreamCreateFile(False, ExpandConstant('{tmp}\AudioFile.mp3'), 0, 0, 0, 0, EncodingFlag or BASS_SAMPLE_LOOP);
    BASS_SetConfig(BASS_CONFIG_GVOL_STREAM, 2500);
    BASS_ChannelPlay(SoundStream, False);
    BASS_ChannelSetAttribute(SoundStream, 2, BASS_Volume/100.0);

    PauseResumePlayButton := TNewButton.Create(WizardForm);
    PauseResumePlayButton.Parent := WizardForm;
    PauseResumePlayButton.Left := ScaleX(10);
    PauseResumePlayButton.Top := WizardForm.CancelButton.Top;
    PauseResumePlayButton.Width :=  WizardForm.CancelButton.Width + ScaleX(10);
    PauseResumePlayButton.Height := WizardForm.CancelButton.Height;
    PauseResumePlayButton.Caption := 'Музыка.Вкл';
    PauseResumePlayButton.OnClick := @PlayButtonClick;
    WizardForm.PasswordEdit.Visible := False;
    WizardForm.PasswordEdit.Text := '12345';
  end;
end;

procedure DeinitializeSetup;
begin
  BASS_Free;
end;
Вам бы явно прежде чем использовать такое шифрование справку по Inno Setup открыть и почитать для начала.
Соединял уже пробовал - не срабатывает "автоввод пароля" просто! (( Соответственно выскакивает ошибка что файлы не могут быть распакованы, т.к. они защифрованы - пароль-то ведь не вводится сам автоматом. Покажите как надо, пожалуйста
 

Александр85

Новичок
залейте на файлообменник (к примеру на DropMeFiles ) пример файла ....xm и библиотеку bassmod.dll и скиньте ссылку
Пожалуйста, вот тут в архиве и библиотека и 2 аудио файла в формате XM:
Архив
Пароль 123
Не обязательно bassmod.dll - главное чтобы антивирусы-параноики "НЕ ругались"!
А XM - неплохое качество звука и при этом небольшой размер и низкое требование ресурсов, только из-за этого! XM- "формат музыки" кейгенов просто )) Ничего НЕ рекламирую и НЕ пропагандирую!!!
 

Andreo Fadio

Старожил
Пожалуйста, вот тут в архиве и библиотека и 2 аудио файла в формате XM
Вот:
Код:
[Setup]
AppName=Bass Audio Project
AppVersion=1.0
DefaultDirName={pf}\Bass Audio Project
Encryption=Yes
Password=12345

[CustomMessages]
MuzonOn=Музыка.Вкл
MuzonOff=Музыка.Выкл

[Files]
Source: bassmod.dll; Flags: dontcopy noencryption
Source: music.xm; Flags: dontcopy noencryption
//Source: music2.xm; Flags: dontcopy noencryption

[Code]
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';
function BASSMOD_MusicLoad(mem: BOOL; f: ansistring; offset: dword; length: dword; flags: dword): Boolean;
  external 'BASSMOD_MusicLoad@files:BASSMOD.dll stdcall delayload';
function BASSMOD_SetVolume(volume: dword): BOOL;
  external 'BASSMOD_SetVolume@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_MusicFree();
  external 'BASSMOD_MusicFree@files:BASSMOD.dll stdcall delayload';
procedure BASSMOD_Free();
  external 'BASSMOD_Free@files:BASSMOD.dll stdcall delayload';

var
 PauseResumePlayButton: TNewButton;

procedure PlayButtonClick(Sender: TObject);
begin
  case TNewButton(Sender).Caption of
  CustomMessage('MuzonOn'): begin
   //Стартуем музыку
   BASSMOD_MusicPlay();
   //Меняем название кнопки на другое значение
   PauseResumePlayButton.Caption := CustomMessage('MuzonOff');
  end;
  CustomMessage('MuzonOff'): begin
   //Ставим на паузу, дабы не начинать трек сначала
   BASSMOD_MusicPause();
   //Меняем название кнопки на другое значение
   PauseResumePlayButton.Caption := CustomMessage('MuzonOn');
  end;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
 if CurPageID = wpPassword then
  WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;

procedure InitializeWizard();
var
 Str: AnsiString;
begin
  //Распаковываем звуковой файл во временную папку
  ExtractTemporaryFile('music.xm');
  if BASSMOD_Init(-1,44100,0) then
  begin
    //Указываем полный путь до нашей музыки
    Str:= ExpandConstant('{tmp}\music.xm');
    //Загружаем музыку и при успешной ответе проверки стартуем музыку
    if BASSMOD_MusicLoad(False, Str, 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND or BASS_MUSIC_PT1MOD or BASS_MUSIC_RAMP) then
    //Стартуем проигрование музыки
     BASSMOD_MusicPlay();
    //Регулируем громкость музыки (задаем ее уровень звучания)
    BASSMOD_SetVolume(90); 

    PauseResumePlayButton := TNewButton.Create(WizardForm);
    PauseResumePlayButton.Parent := WizardForm;
    PauseResumePlayButton.Left := ScaleX(10);
    PauseResumePlayButton.Top := WizardForm.CancelButton.Top;
    PauseResumePlayButton.Width :=  WizardForm.CancelButton.Width + ScaleX(10);
    PauseResumePlayButton.Height := WizardForm.CancelButton.Height;
    PauseResumePlayButton.Caption := CustomMessage('MuzonOff');
    PauseResumePlayButton.OnClick := @PlayButtonClick;
  end;
  WizardForm.PasswordEdit.Visible := False;
  WizardForm.PasswordEdit.Text := '12345';
end;

procedure DeinitializeSetup;
begin
  BASSMOD_MusicFree();
  BASSMOD_Free();
end;
 
Последнее редактирование:

Александр85

Новичок
Вот:
Код:
[Setup]
AppName=Bass Audio Project
AppVersion=1.0
DefaultDirName={pf}\Bass Audio Project
Encryption=Yes
Password=12345

[Files]
Source: bassmod.dll; Flags: dontcopy noencryption
Source: music.xm; Flags: dontcopy noencryption
//Source: music2.xm; Flags: dontcopy noencryption

[Code]
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';
function BASSMOD_MusicLoad(mem: BOOL; f: ansistring; offset: dword; length: dword; flags: dword): Boolean;
  external 'BASSMOD_MusicLoad@files:BASSMOD.dll stdcall delayload';
function BASSMOD_SetVolume(volume: dword): BOOL;
  external 'BASSMOD_SetVolume@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_MusicFree();
  external 'BASSMOD_MusicFree@files:BASSMOD.dll stdcall delayload';
procedure BASSMOD_Free();
  external 'BASSMOD_Free@files:BASSMOD.dll stdcall delayload';

var
PauseResumePlayButton: TNewButton;

procedure PlayButtonClick(Sender: TObject);
begin
  case TNewButton(Sender).Caption of
  'Музыка.Выкл': begin
   BASSMOD_MusicPlay();
   PauseResumePlayButton.Caption := 'Музыка.Вкл';
  end;
  'Музыка.Вкл': begin
   BASSMOD_MusicPause();
   PauseResumePlayButton.Caption := 'Музыка.Выкл';
  end;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpPassword then
  WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;

procedure InitializeWizard();
var
Str: AnsiString;
begin
  ExtractTemporaryFile('music.xm');
  if BASSMOD_Init(-1,44100,0) then
  begin
    Str:= ExpandConstant('{tmp}\music.xm');
    if BASSMOD_MusicLoad(False, Str, 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND or BASS_MUSIC_PT1MOD or BASS_MUSIC_RAMP) then
     BASSMOD_MusicPlay();

    //Регулируем громкость музыки
    BASSMOD_SetVolume(50);

    PauseResumePlayButton := TNewButton.Create(WizardForm);
    PauseResumePlayButton.Parent := WizardForm;
    PauseResumePlayButton.Left := ScaleX(10);
    PauseResumePlayButton.Top := WizardForm.CancelButton.Top;
    PauseResumePlayButton.Width :=  WizardForm.CancelButton.Width + ScaleX(10);
    PauseResumePlayButton.Height := WizardForm.CancelButton.Height;
    PauseResumePlayButton.Caption := 'Музыка.Вкл';
    PauseResumePlayButton.OnClick := @PlayButtonClick;
  end;
  WizardForm.PasswordEdit.Visible := False;
  WizardForm.PasswordEdit.Text := '12345';
end;

procedure DeinitializeSetup;
begin
  BASSMOD_MusicFree();
  BASSMOD_Free();
end;
Спасибо, работает!
BASSMOD_SetVolume(50); - это ругулировка громкости? Тут музыка уже стартует и будет играет на громкости в 50, я правильно понял?

UDDATE!
Andreo Fadio, с кнопкой, вкл/выкл, что-то не то! При запуске установщика, когда первый раз на нее нажимаешь она не всегда срабатывает - не выключает музыку и надписи перепутаны местами вкл/выкл... при попытке поменять надписи на кнопке кнопка перестает работать вообще
 
Последнее редактирование:

Andreo Fadio

Старожил
с кнопкой, вкл/выкл, что-то не то! При запуске установщика, когда первый раз на нее нажимаешь она не всегда срабатывает - не выключает музыку и надписи перепутаны местами вкл/выкл...
там смысл чтобы когда музыка играет то светится надпись: Музыка: Вкл, если написано Музыка: Выкл то не работает.
 

Александр85

Новичок
там смысл чтобы когда музыка играет то светится надпись: Музыка: Вкл, если написано Музыка: Выкл то не работает.
А "без смысла" )) можно сделать? Если музыка играет, то на кнопке написано "Выкл музыку", т.е. если пользователь на неё нажмет она выключится, если музыка не играет, то на кнопке написано "Вкл музыку" и если пользователь на нее нажмет, то музыка заиграет, так вроде как логичнее, разве нет? ))
 

Andreo Fadio

Старожил
главное чтобы антивирусы-параноики "НЕ ругались"!
Такое будет если собирать установщик на китайской Enchanced Edition и то будет реагировать.

Вот пример простого скрипта, без большого доп. стороннего кода и библиотек в составе (из примеров к Inno Setup) на самой последней IS 6.2:
 
Сверху