2011-09-30 59 views
0

我在写一个使用Delphi prism的程序。目标是能够在同一个项目的windows和linux(mono)上运行。所以,在这一点上,我需要有一种播放Windows和Linux(单声道)声音文件的方式,而无需导入winmm.dll或microsoft.visualbasic.dll。播放声音文件无需导入winmm.dll或microsoft.visualbasic.dll

因为我需要这个在单声道也工作,我不想使用visualbasic.dll。过去,它给了我各种各样的问题。

有没有方法播放声音文件而不使用这些dll文件?

UPDATE

无论声音播放如何实例化和使用,它始终工作在Windows OS罚款,而在Linux下单有时戏剧和其他时候它只是将根本无法播放。

第一版:

var thesound := new SoundPlayer; 

    if Environment.OSVersion.Platform = Environment.OSVersion.Platform.Unix then 
    thesound.SoundLocation := '/sounds/Alarms.wav' 
    else 
    thesound.SoundLocation:='\sounds\Alarms.wav'; 

    thesound.Load; 
    thesound.PlayLooping; 

版本二

var sp := new SoundPlayer(new FileStream("/sounds/Alarms.wav", FileMode.Open, FileAccess.Read, FileShare.Read)); 
sp.PlayLooping; 
+0

他们有关于播放声音文件的在线信息很多都与微软的dll文件有关。 – ThN

回答

4

您可以使用System.Media.SoundPlayer。这由Mono实施。

+0

@digital SoundPlayer对你有好处吗?如果不是为什么不呢? –

+0

嗨,我已经在我的程序中实现了SoundPlayer,但没有对它进行测试,因为我的程序有其他编译器错误,我正在处理这些错误。也许我应该写一个示例程序并对其进行测试。然后,我会接受你的答案。再次感谢。 – ThN

+0

@ David,自从我开始编写Linux或Mono程序以来,我注意到的一件事就是Linux或Mono环境与Windows完全不同,这就是它非常安全的原因。因此,任何你为他们写的东西,你都需要确保你采取每一个步骤,并执行一切必要的事情来完成你需要做的事情。声音文件播放的原因以及其他原因并不是因为代码有问题。当你在Linux中启动时,它必须停止,否则它将停留在该模式下,并且不会让你再次启动它,即串行端口。 – ThN