我有一個用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;
然後我跑了,鎖定了控制檯(使用WindowsL),並等待20秒。聲音播放成功。
通過遠程桌面連接進行工作時,需要將連接設置爲在本地而不是遠程計算機上播放聲音。我知道,因爲我不得不提醒同事們在他們在家工作時重新佈置他們的聲音...... –
@Marjan,評論+1,以及不使用鋼絲鉗。我確定這很誘人。 –
@Chris::-)是的,這是... –
- 1. cordova藍牙揚聲器沒有聲音
- 2. 強制iPhone通過揚聲器輸出,同時從耳機麥克風錄音
- 3. 開關音頻輸出到揚聲器
- 4. 通過android揚聲器播放音樂
- 5. Android - 通過揚聲器播放音頻
- 6. Android聲音揚聲器
- 7. 帶音頻單元的錄音揚聲器輸出
- 8. 將聲音輸出到接收器而不是揚聲器
- 9. Windows Phone 8錄音揚聲器音頻
- 10. AVAudioPlayer輸出到揚聲器
- 11. 在iPhone「呼叫」揚聲器中輸出聲音
- 12. 如何將聲音分離輸出到揚聲器和耳機?
- 13. AVAudioRecorder&AVAudioPlayer - 內置揚聲器的聲音輸出,如何更改?
- 14. 需要多種聲音輸出到多個揚聲器
- 15. PC揚聲器通過JavaScript?
- 16. WASAPI沒有聲音輸出
- 17. AudioKit - 沒有聲音輸出
- 18. MPMoviePlayerController拒絕通過iOS4中的揚聲器播放聲音
- 19. 如何在vb.Net中通過外部揚聲器播放聲音?
- 20. 目標C:從揚聲器輸出中錄製音頻?
- 21. iPhone,在通話時是否可以通過揚聲器播放聲音?
- 22. 在Java中,如何記錄發送給揚聲器的聲音輸出?
- 23. 音頻漂移當管道聲音在揚聲器在Node.js
- 24. 如何從揚聲器錄製音頻?
- 25. 如何從揚聲器錄製音頻?
- 26. 同時向揚聲器和耳機輸出音頻?
- 27. 同時在耳機和揚聲器上輸出音頻
- 28. 麥克風發出的聲音與揚聲器發出的聲音
- 29. 如何發送聲音給揚聲器
- 30. 如何改變揚聲器的聲音?
如果你只是使用標準的PlaySound Windows API,你是否也有同樣的問題? – Brad
是的,使用PlaySound會發生同樣的問題。我也嘗試使用Speech API,並有同樣的問題。就好像聲卡不會輸出任何東西,除非您直接登錄到計算機。 –
我知道,即使在控制檯被鎖定的情況下,運行的程序也可以通過PlaySound API函數播放聲音。我不熟悉Delphi,但是你確定你直接調用了Win32 API嗎?如果有幫助,當你鎖定你的電腦時,屏幕上顯示的實際上是一個不同的會話。與遠程桌面一樣......它是一個不同的會話。 – Brad