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

Sam*_*m M 5 delphi windows-7

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

Nat*_*Nat 3

正如布拉德建议的那样,使用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;
Run Code Online (Sandbox Code Playgroud)

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

  • 通过远程桌面连接工作,您需要将连接设置为在本地而不是在远程计算机上播放声音。我知道,因为我不得不提醒同事在家工作时重新调整声音路线...... (2认同)
  • @Marjan,对评论+1,并且不诉诸钢丝钳。我确信这很诱人。 (2认同)