Frage

Ich habe eine WAV-Datei auf meinem Windows Mobile-App und ich möchte MobilePlaySound in coredll.dll verwenden, um es zu spielen.

Der Dateiname ist mit einem seiner Parameter:


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

ich einen neuen Ordner erstellen ‚Klang‘, fügen Sie ‚start.wav‘ für das Projekt und stellen Sie die Eigenschaft ‚Build Action‘ auf ‚Embedded Ressourcen‘.

Dann habe ich die Dateinamen:


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

Aber der Ton gar nicht spielen. Was ist die richtige filePath dann?

War es hilfreich?

Lösung

Durch die Einstellung der Build-Aktion auf „Embedded Resource“ wird die Datei in der Assembly als Ressource kompiliert werden. Dies bedeutet, dass die WAV-Datei in Ihrem EXE- oder DLL-Datei eingebettet werden, und es wird nicht im Dateisystem erscheinen. Aus diesem Grund kann man nicht einen Dateinamen für die wav zu einem gewissen Methode übergeben, die es braucht.

Es gibt zwei Möglichkeiten, es zu lösen: Wenn Sie wirklich die WAV-Datei als eingebettete resouce haben wollen, müssen Sie die Ressource extrahieren und schreiben Sie es in eine Datei im Dateisystem zur Laufzeit. Anschließend können Sie den Namen der Datei in der MobilePlaySound-Methode übergeben. Ich persönlich würde nicht wählen diese Lösung in diesem Fall.

Die andere Lösung ist es, nicht bettet die WAV-Datei als Ressource, aber es lebt, als eine eigene Datei im Dateisystem lassen. Um dies zu erreichen, setzen Sie die Build-Aktion auf „Inhalt“ und stellen Sie die „Copy to Output Directory“ -Einstellung auf entweder „Copy immer“ oder „Kopieren, falls neuere“. Dadurch wird der Compiler, um die Datei in der Ausgabe enthalten. In diesem Fall wird Ihre Annahme darüber, wo die Datei sein soll, ist korrekt.

Kurz gesagt:

  • Build action = "Content"
  • kopieren Output Directory = "Copy immer" oder "Kopieren, falls neuere"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top