论坛风格切换切换到宽版
  • 1905阅读
  • 2回复

【已解决】Inno Setup如何在安装时播放音乐循环播放? [复制链接]

上一主题 下一主题
离线2015
 

发帖
48
金钱
459
威望
46
只看楼主 倒序阅读 0 发表于: 2016-10-04
[Code]
Function mciSendString(lpszCommand: String; lpszReturnString: Integer; cchReturnLength: Integer; hwndCallback: Integer): Integer;
external 'mciSendStringA@winmm.dll stdcall';
procedure InitializeWizard();
var
   BGMusicFile, SplashFile: string;
SplashForm: TForm;
SplashFileName: String;
I: Integer;
begin
ExtractTemporaryFile(ExtractFileName(ExpandConstant('{tmp}\music.mp3')));
SplashForm := TForm.create(nil);
with SplashForm do
   begin
mciSendString(ExpandConstant('play {tmp}\music.mp3'),0,0,0);
Close;
Free;
   end;
end;
[Files]
Source: "C:\music.mp3"; Flags: dontcopy


本帖提到的人: @restools @wanfu @changyw
离线wanfu

发帖
2728
金钱
12110
威望
1211
只看该作者 1 发表于: 2016-10-04
经测试,上述代码是无法播放音频的,参考下列 Restools 老师的帖子,给出下列脚本供参考,可以自动循环播放:
http://bbs.hanzify.org/read-htm-tid-38483.html

[Files]
Source: "C:\music.mp3"; Flags: dontcopy

[Code]
function mciSendString(lpstrCommand, lpstrReturnString: AnsiString; uReturnLength, hWndCallback: Integer): Integer;
external 'mciSendStringA@winmm.dll stdcall';

//备注:上面的 mciSendString 函数也可以修改成这样(使用 Unicode 字符串):
//function mciSendString(lpstrCommand, lpstrReturnString: String; uReturnLength, hWndCallback: Integer): Integer;
//external 'mciSendStringW@winmm.dll stdcall';

procedure InitializeWizard();
var
  s: string;
begin
    //ExtractTemporaryFile(ExtractFileName(ExpandConstant('{tmp}\music.mp3')));
    ExtractTemporaryFile('music.mp3');
    if FileExists(ExpandConstant('{tmp}\music.mp3')) then begin
       mciSendString(ExpandConstant('OPEN {tmp}\music.mp3 TYPE MPEGVIDEO ALIAS BGMUSIC'),s,255,0);
       mciSendString(ExpandConstant('PLAY BGMUSIC REPEAT'),s,255,0);
    end;
end;
离线2015

发帖
48
金钱
459
威望
46
只看该作者 2 发表于: 2016-10-05
回 1楼(wanfu) 的帖子
wanfu:经测试,上述代码是无法播放音频的,参考下列 Restools 老师的帖子,给出下列脚本供参考,可以自动循环播放:http://bbs.hanzify.org/read-htm-tid-38483.html[Files]Source: "C:\music.mp3"; Flags: dontcopy.... .. (2016-10-04 23:19) 

再次感谢wanfu版主,可以了。