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

时间:2011-08-17 02:19:01

标签: delphi windows-7

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

1 个答案:

答案 0 :(得分:3)

正如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秒。声音播放成功。