Question

J'ai ajouté un fichier wav à mon application Windows Mobile et je veux utiliser MobilePlaySound dans COREDLL.DLL pour le lire.

Le nom de fichier est l'un de ses paramètres:


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

Je crée un nouveau « son » dossier, ajouter « start.wav » au projet et définir sa propriété « Build action » à « Ressources intégrées ».

Alors je configure le nom:


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

Mais le son ne joue pas du tout. Quelle est la filePath correcte, alors?

Était-ce utile?

La solution

En définissant l'action de construction à « ressource incorporée » le fichier sera compilé dans votre assemblage en tant que ressource. Cela signifie que le fichier wav sera intégré dans votre fichier .exe ou .dll, et il ne sera pas apparaître dans le système de fichiers. En raison de cela, vous ne pouvez pas passer un nom de fichier pour le wav à une méthode qui en a besoin.

Il y a deux façons de le résoudre: si vous voulez vraiment avoir le fichier wav comme un resouce intégré, vous aurez besoin d'extraire la ressource et l'écrire dans un fichier dans le système de fichiers lors de l'exécution. Vous pouvez ensuite transmettre le nom de ce fichier à la méthode MobilePlaySound. Personnellement, je ne pas choisir cette solution dans ce cas.

L'autre solution consiste à pas intégrer le fichier wav comme une ressource, mais laissez-le vivre comme son propre fichier dans le système de fichiers. Pour ce faire, définir l'action de construction à « contenu » et définissez le « Copier vers Output Directory » réglage soit « Copier toujours » ou « Copier si plus récent ». Cela rendra le compilateur inclut le fichier dans la sortie. Dans ce cas, votre hypothèse sur laquelle le fichier doit être est correct.

En bref:

  • Construire action = "contenu"
  • Copier sur Output Directory = "Copier toujours" ou "Copier si plus récent"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top