1

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

fileName 是它的参数之一:


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";

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

4

1 回答 1

1

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

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

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

简而言之:

  • 构建动作 = “内容”
  • 复制到输出目录 =“始终复制”或“如果更新则复制”
于 2009-05-18T08:06:17.410 回答