Tocando/Emitindo som com C#

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