Dica rápida para emitir um som com C# usando a API do Windows: basta importar a função PlaySound. Crie a lista enumerada e importe a DLL utilizando os seguintes códigos:
// FLAGS DE SOM
[System.Flags]
public enum PlaySoundFlags : int
{
SND_SYNC = 0x0000,
SND_ASYNC = 0x0001,
SND_NODEFAULT = 0x0002,
SND_LOOP = 0x0008,
SND_NOSTOP = 0x0010,
SND_NOWAIT = 0x00002000,
SND_FILENAME = 0x00020000,
SND_RESOURCE = 0x00040004
}
// IMPORTAÇÃO DO COMPONENTE DE SOM
[DllImport("winmm.dll", EntryPoint = "PlaySound", SetLastError = true, CharSet = CharSet.Unicode, ThrowOnUnmappableChar = true)]
private static extern bool PlaySound(string szSound, System.IntPtr hMod, PlaySoundFlags flags);
Não precisa copiar a DLL para a aplicação uma vez que ele busca na biblioteca do próprio Windows.
Para tocar, execute o método (exemplo):
PlaySound("sound.wav", new System.IntPtr(), PlaySoundFlags.SND_ASYNC);
Sempre use a flag PlaySoundFlags.SND_ASYNC (forma assíncrona). É aconselhável usar ela do que PlaySoundFlags.SND_SYNC (forma síncrona) se estiver trabalhando com outro processamento em paralelo. Ou seja, após o som, se for realizar algum outro método ou trecho de código. De forma assíncrona ele irá tocar e continuar com o processamento do código que tiver logo abaixo (paralelo). De forma síncrona pode haver lentidão no processo pois à vezes o som pode demorar a tocar ou ter que esperar terminar para prosseguir (contínuo). Faça os testes antes para ver o diferencial.
Agora sim! Volte ao post do Microterminal e adicione sua função para tocar um som quando apertar * (asterisco).
0 comentários:
Postar um comentário