Domanda

Ho aggiunto un file wav al mio Windows Mobile app e voglio usare MobilePlaySound in COREDLL.DLL per riprodurlo.

Il nome del file è uno dei suoi parametri:


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

creo 'suono' una nuova cartella, aggiungere 'Start.wav' al progetto e impostare la proprietà 'Build azione' a 'risorse incorporate'.

Poi ho impostato il nome del file:


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

Ma il suono non gioca affatto. Qual è il filePath corretto allora?

È stato utile?

Soluzione

Impostando l'azione build "Risorsa incorporata" il file verrà compilato nel montaggio come una risorsa. Ciò significa che il file WAV verrà incorporato nel vostro file exe o dll, e non verrà visualizzato nel file system. A causa di questo, non è possibile passare un nome di file per il wav a un metodo che ne ha bisogno.

Ci sono due modi per risolverlo: se si vuole veramente avere il file wav come un resouce incorporato, è necessario estrarre la risorsa e scrivere in un file nel file system in fase di esecuzione. È quindi possibile passare il nome del file per il metodo MobilePlaySound. Non avrei personalmente scegliere questa soluzione in questo caso.

L'altra soluzione è quella di non incorporare il file wav come risorsa, ma lasciarlo vivere come un proprio file nel file system. Per raggiungere questo obiettivo, impostare l'azione build "Contenuti" e impostare il "Copia in uscita Directory" su entrambi i "Copia sempre" o "Copia se più recente". Questo renderà il compilatore includere il file in uscita. In questo caso, la tua ipotesi su dove il file dovrebbe essere sia corretta.

In breve:

  • Crea action = "Content"
  • Copia in uscita directory = "Copia sempre" o "Copia se più recente"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top