Sampron Поставил
, всё равно видно, хотя и немного хуже, но всё равно проценты видны
.
У меня такой вопрос на счёт проигрывания музыки. У меня есть скрипт с произвольным при запуске проигрыванием музыки, но потом одна и таже песня постоянно повторяется, а я хочу чтобы произвольное проигрывание музыки было постоянно, не только при запуске.
[more=Скрипт]
;#define SoundFolder "Sound" -- название папки с музыкальными файлами
;#define Mask "*.mp3" -- маска музыкальных файлов
#define FindHandle
#define FindResult
#define SoundFolder "Sound"
#define Mask "*.mp3"
[Setup]
AppName=Example.Random.Play.MP3.Music.On.Start.Up
AppVerName=Example.Random.Play.MP3.Music.On.Start.Up
AppPublisher=My Company, Inc.
DefaultDirName=C:\Example.Random.Play.MP3.Music.On.Start.Up
OutputBaseFilename=random.play.mp3.music.on.start.up.by.genri
[Files]
Source: Bass.dll; Flags: dontcopy noencryption
Source: {#SoundFolder}\{#Mask}; Flags: dontcopy noencryption nocompression
[Code]
const
BASS_ACTIVE_STOPPED = 0;
BASS_ACTIVE_PLAYING = 1;
BASS_ACTIVE_STALLED = 2;
BASS_ACTIVE_PAUSED = 3;
BASS_SAMPLE_LOOP = 4;
var
mp3Handle: HWND;
mp3Name: string;
FilesCount: Integer;
function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';
function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): DWORD;
external 'BASS_StreamCreateFile@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_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';
function BASS_Pause(): Boolean;
external 'BASS_Pause@files:BASS.dll stdcall delayload';
function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';
function GetRandomFile(max: integer): string;
var
FindRec: TFindRec;
i, rnd: integer;
begin
Result := '';
rnd := Random(max);
if FindFirst(ExpandConstant('{tmp}\{#Mask}'), FindRec) then
begin
try
while i < rnd do
begin
FindNext(FindRec);
i := i + 1;
end;
finally
Result := FindRec.Name;
FindClose(FindRec);
end;
end;
end;
function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('BASS.dll');
#sub ProcessFoundFile
#define FileName FindGetFileName(FindHandle)
ExtractTemporaryFile('{#FileName}');
FilesCount := FilesCount + 1;
#endsub
#for {FindHandle = FindResult = FindFirst(SoundFolder + "\" + Mask, 0); FindResult; FindResult = FindNext(FindHandle)} ProcessFoundFile
mp3Name := ExpandConstant('{tmp}\') + GetRandomFile(FilesCount);
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
Result := True;
end;
procedure PlayButtonOnClick(Sender: TObject);
begin
case BASS_ChannelIsActive(mp3Handle) of
BASS_ACTIVE_PAUSED:
begin
BASS_ChannelPlay(mp3Handle, False);
end;
BASS_ACTIVE_STOPPED:
begin
BASS_Init(-1, 44100, 0, 0, 0);
mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP);
BASS_Start();
BASS_ChannelPlay(mp3Handle, False);
end;
end;
end;
procedure PauseButtonOnClick(Sender: TObject);
begin
BASS_ChannelPause(mp3Handle);
end;
procedure StopButtonOnClick(Sender: TObject);
begin
BASS_Stop();
BASS_Free();
end;
procedure InitializeWizard();
var
PlayButton, PauseButton, StopButton, ForwardButton, BackButton: TButton;
Panel1: TPanel;
begin
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
PlayButton := TButton.Create(WizardForm);
PlayButton.Left := 10;
PlayButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PlayButton.Height := 23; //Высота кнопки
PlayButton.Width := 30; //Ширина кнопки
PlayButton.Caption := '>'; //Название кнопки
PlayButton.ShowHint := True
PlayButton.Hint := 'Воспроизведение музыки'
PlayButton.OnClick := @PlayButtonOnClick;
PlayButton.Parent := WizardForm;
PlayButton.Cursor := crHand;
PauseButton := TButton.Create(WizardForm);
PauseButton.Left := 45;
PauseButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PauseButton.Height := 23; //Высота кнопки
PauseButton.Width := 30; //Ширина кнопки
PauseButton.Caption := 'II'; //Название кнопки
PauseButton.ShowHint := True
PauseButton.Hint := 'Приостановить музыку'
PauseButton.OnClick := @PauseButtonOnClick;
PauseButton.Parent := WizardForm;
PauseButton.Cursor := crHand;
StopButton := TButton.Create(WizardForm);
StopButton.Left := 80;
StopButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
StopButton.Height := 23; //Высота кнопки
StopButton.Width := 30; //Ширина кнопки
StopButton.Caption := '[]'; //Название кнопки
StopButton.ShowHint := True
StopButton.Hint := 'Остановить музыку'
StopButton.OnClick := @StopButtonOnClick;
StopButton.Parent := WizardForm;
StopButton.Cursor := crHand;
end;
end;
procedure DeinitializeSetup();
begin
BASS_Stop();
BASS_Free();
end;
[/more]