杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2018|回复: 0

Inno Setuo 实现音乐的播放和关闭机器继续播放

[复制链接]
发表于 2017-3-6 17:18:29 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. [Code]
  2. Type
  3.   HSAMPLE = DWORD;
  4.   HCHANNEL = DWORD;

  5. var
  6.   MusicSwitchLabel1: TNewStaticText;
  7.   sample: HSAMPLE;
  8.   channel: HCHANNEL;

  9. // 以下是所调用的插件函数
  10. function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND; clsid: string): Boolean;
  11. external 'BASS_Init@files:BASS.dll stdcall delayload';

  12. procedure BASS_Free();
  13. external 'BASS_Free@files:BASS.dll stdcall delayload';

  14. function BASS_SampleLoad(mem: BOOL; f: PAnsiChar; offset, length, max, flags: DWORD): HSAMPLE;
  15. external 'BASS_SampleLoad@files:BASS.dll stdcall delayload';

  16. function BASS_ChannelPlay(handle: DWORD; restart: BOOL): BOOL;
  17. external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

  18. function BASS_ChannelPause(handle: DWORD): BOOL;
  19. external 'BASS_ChannelPause@files:BASS.dll stdcall delayload';

  20. function BASS_SampleGetChannel(handle: HSAMPLE; onlynew: BOOL): HCHANNEL;
  21. external 'BASS_SampleGetChannel@files:BASS.dll stdcall delayload';

  22. procedure callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PAnsiChar);
  23. external 'callplug@files:callnsis.dll stdcall delayload';

  24. // 以下是点击“关于”按钮后的响应函数
  25. procedure AboutButtonOnClick(Sender: TObject);
  26. begin
  27.   MsgBox('这是你的信息。'#13#10'这是你的信息的第二行。', mbInformation, MB_OK);
  28. end;

  29. // 以下是点击“关闭音乐”按钮后的响应函数
  30. procedure MusicSwitchLabel1OnClick(Sender: TObject);
  31. begin
  32.   if MusicSwitchLabel1.Caption = '关闭音乐' then
  33.     begin
  34.       BASS_ChannelPause(channel);
  35.       MusicSwitchLabel1.Caption := '打开音乐';
  36.     end
  37.   else
  38.     begin
  39.       BASS_ChannelPlay(channel, false);
  40.       MusicSwitchLabel1.Caption := '关闭音乐';
  41.     end;
  42. end;

  43. // 安装向导初始化函数
  44. procedure InitializeWizard();
  45. var
  46.   AboutButton: TButton;
  47.   BGMusicFile, SplashFile: string;
  48. begin
  49.   // 创建“关于”按钮
  50.   AboutButton := TButton.Create(WizardForm);
  51.   AboutButton.Left := WizardForm.ClientWidth - WizardForm.CancelButton.Left - WizardForm.CancelButton.Width;
  52.   AboutButton.Top := WizardForm.CancelButton.Top;
  53.   AboutButton.Width := WizardForm.CancelButton.Width;
  54.   AboutButton.Height := WizardForm.CancelButton.Height;
  55.   AboutButton.Caption := '关于(&A)...';
  56.   AboutButton.OnClick := @AboutButtonOnClick;
  57.   AboutButton.Parent := WizardForm;

  58.   // 创建文字标签作为“打开音乐”或“关闭音乐”按钮
  59.   MusicSwitchLabel1 := TNewStaticText.Create(WizardForm);
  60.   MusicSwitchLabel1.Left := AboutButton.Left + ScaleX(110);
  61.   MusicSwitchLabel1.Top := WizardForm.CancelButton.Top + ScaleY(7);
  62.   MusicSwitchLabel1.Width := ScaleX(50);
  63.   MusicSwitchLabel1.Height := ScaleY(12);
  64.   MusicSwitchLabel1.Font.Color := clBlue;
  65.   MusicSwitchLabel1.Font.Style := [fsUnderline];
  66.   MusicSwitchLabel1.Cursor := crHand;
  67.   MusicSwitchLabel1.Caption := '关闭音乐';
  68.   MusicSwitchLabel1.OnClick := @MusicSwitchLabel1OnClick;
  69.   MusicSwitchLabel1.Parent := WizardForm;
  70.   
  71.   // 释放临时文件
  72.   ExtractTemporaryFile('BASS.dll');
  73.   ExtractTemporaryFile('CallNSIS.DLL');
  74.   ExtractTemporaryFile('NewAdvSplash.DLL');
  75.   ExtractTemporaryFile('mymusic.mp3');
  76.   ExtractTemporaryFile('splash.gif');

  77.   BGMusicFile := ExpandConstant('{tmp}\mymusic.mp3');
  78.   SplashFile := ExpandConstant('{tmp}\splash.gif');

  79.   // 播放背景音乐
  80.   if not BASS_Init(-1,44100,0,0,'') then
  81.     BASS_Free;
  82.   sample := BASS_SampleLoad(false, PAnsiChar(BGMusicFile), 0, 0, 1, 4);
  83.   if sample<>0 then
  84.     begin
  85.     channel:= BASS_SampleGetChannel(sample, false);
  86.     BASS_ChannelPlay(channel, true);
  87.     end;

  88.   // 闪屏:显示时间 1600、淡入 800、淡出 500、透明颜色 -2 (表示 gif 图像本身透明)
  89.   callplug(0,ExpandConstant('{tmp}\NewAdvSplash.dll'),'show','1600','800','500','-2',SplashFile,'','','','','');

  90.   // 以下是安装向导初始化函数的其它代码
  91.   // 请自己加上
  92. end;

  93. // 以下是其它 CODE 段代码
  94. // 请自己加上
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-19 23:39 , Processed in 0.111550 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表