inno-setup - 在 Inno Setup 中使用 SAPI 对象

标签 inno-setup ole pascalscript

我想使用 Windows SAPI COM 对象在安装过程中发出声音。 我知道在 VBScript 中他们是这样做的:

Set oVoice = CreateObject("SAPI.SpVoice")
set oSpFileStream = CreateObject("SAPI.SpFileStream")
oSpFileStream.Open "xxx.wav"
oVoice.SpeakStream oSpFileStream
oSpFileStream.Close

我问过,如何在 Inno Setup 脚本中执行此操作。 我是 Inno Setup 的新手,还没有学会如何使用 CreateOleObject 函数等等。 我试图了解 Inno Setup 文档,但它对我没有帮助。 关于使用 COM 对象的其他答案也没有让我理解这一点。 感谢您的帮助

最佳答案

使用CreateOleObject support function :

var
  oVoice, oSpFileStream: Variant;
begin
  oVoice := CreateOleObject('SAPI.SpVoice');
  oSpFileStream := CreateOleObject('SAPI.SpFileStream');
  oSpFileStream.Open('xxx.wav');
  oVoice.SpeakStream(oSpFileStream);
end;

参见 Pascal Scripting: Using COM Automation objects .


有关替代解决方案,请参阅 Playing sound during an Inno Setup install .

关于inno-setup - 在 Inno Setup 中使用 SAPI 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71234172/

相关文章:

inno-setup - 如果包含文件在包含后被删除,则 Inno Setup 在编译后显示 "Failed to open included file"错误消息

visual-c++ - 确定处理器是 AMD64 还是 Intel64?

delphi - 跳出 block 时是否有一种安全的方法来清理基于堆栈的代码?

inno-setup - Inno Setup - 卸载时不显示进度条

inno-setup - 命令行开关阻止 Inno Setup 安装程序创建桌面图标

windows - 多个ProgID可以指向同一个ClsID吗?

delphi - OLE自动化: How to check if a variant references an automation object

Ruby 电子表格 OLE 问题

inno-setup - 从 Inno Setup 下载页面隐藏 URL

inno-setup - 在 Inno Setup 脚本中提供 SignTool 配置