delphi - 未登录时通过扬声器输出声音

标签 delphi windows-7

我有一个用 Delphi XE 编写的程序,它使用 TMediaPlayer 播放 WAV 文件。该程序在 Windows 7 计算机的系统托盘中运行。程序等待事件触发播放 wav 文件。如果我登录计算机本身,wav 播放得很好。但如果我锁定计算机终端(或通过远程桌面登录),则 wav 文件不会通过计算机扬声器播放。我知道事件正在被触发,因为事件处理程序中的所有其他代码都工作正常;只是你听不到wav文件。我已将音量硬编码为最大级别,因此我知道这不是音量问题。如果当前没有人登录计算机,Windows 7 是否有某种功能可以阻止扬声器发出声音?如果存在这种限制,有办法解决吗?

最佳答案

正如 Brad 建议的那样,使用 PlaySound() 而不是 TMediaPlayer。当机器“锁定”时它工作正常。但不确定它是否可以通过远程桌面连接工作。

为了确认这一点,我创建了一个新应用程序,在表单上放置一个 TTimer ,将 Interval 属性设置为 20000 并将此代码放入 OnTimer 中 事件:

procedure TForm13.Timer1Timer(Sender: TObject);
begin
  PlaySound('c:\windows\media\tada.wav', 0, SND_ASYNC or SND_FILENAME);
end;

然后我运行它,锁定控制台(使用 Windows L),并等待 20 秒。声音播放成功。

关于delphi - 未登录时通过扬声器输出声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7087301/

相关文章:

c# - 从文本文件读取到数据库表的有效方法

python - 在带有 SP1 的 Windows 7 32 位上安装 Python 3.8

windows - 如何在 Windows 7 x64 上禁用 ASLR(地址空间布局随机化)?

iis - 确定Windows 7中的iis版本

windows-7 - 哪些设备可用于在台式机上测试 WM_GESTURE 和 WM_TOUCH 代码?

delphi - 如何让Delphi重新保存所有表单?

Delphi Firemonkey DX Seattle TTabControl 在 TVertScrollBox 内时无法正确重印

delphi - 通过 OLE 调用 Word CentimetersToPoints 时出现未指定错误

visual-studio-2010 - 无法使用 VS2010 进行远程调试

delphi - 如何在对象类型过程的 in 参数中传递 nil 值