我向 Windows Mobile 应用程序添加了一个 wav 文件,并且想使用 CoreDll.dll 中的 MobilePlaySound 来播放它。

文件名是其参数之一:


MobilePlaySound(fileName, IntPtr.Zero, (int)(Flags.SND_ASYNC | Flags.SND_FILENAME));

我创建一个新文件夹“sound”,将“start.wav”添加到项目中,并将其属性“Build Action”设置为“Embedded Resources”。

然后我设置文件名:


fileName = "\\Program Files\\myApp\\sound\\start.wav";

但声音根本不播放。那么正确的文件路径是什么?

有帮助吗?

解决方案

通过将构建操作设置为“嵌入资源”,该文件将作为资源编译到程序集中。这意味着 wav 文件将嵌入到您的 .exe 或 .dll 文件中,并且不会出现在文件系统中。因此,您无法将 wav 的文件名传递给需要它的某些方法。

有两种方法可以解决:如果您确实希望将 wav 文件作为嵌入式资源,则需要提取资源并在运行时将其写入文件系统中的文件。然后,您可以将该文件的名称传递给 MobilePlaySound 方法。在这种情况下,我个人不会选择这个解决方案。

另一个解决方案是 不是 将 wav 文件作为资源嵌入,但让它作为自己的文件存在于文件系统中。要实现此目的,请将构建操作设置为“内容”,并将“复制到输出目录”设置设置为“始终复制”或“如果较新则复制”。这将使编译器在输出中包含该文件。在这种情况下,您对文件应位于何处的假设是正确的。

简而言之:

  • 构建操作=“内容”
  • 复制到输出目录=“始终复制”或“如果较新则复制”
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top