Come ottenere il percorso del file di file aggiunto a Windows Mobile app?
-
22-08-2019 - |
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?
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"