2017-10-02 3 views
1

Je souhaite pouvoir couper tous les autres programmes et jouer un son/un son constant lorsque le bouton est maintenu enfoncé.Désactiver tous les autres programmes sauf le mien tant que le bouton est enfoncé

Le son/son est joint sous forme de récapitulatif sous My.Recources et est appelé Beep_effect.

La plupart du code provient d'une des réponses mais ne fonctionne toujours pas.

C'est le code que j'ai jusqu'à présent:

Imports CSCore 
Imports CSCore.Codecs 
Imports CSCore.CoreAudioAPI 
Imports CSCore.SoundOut 
Imports System.Runtime.InteropServices 

Module Module1 

    Private filename As Object = My.Resources.Beep_effect 
    Private _waveSource As IWaveSource 
    Private _soundOut As ISoundOut 
    Private device As MMDevice 

    Sub Main() 

     Using mmdeviceEnumerator = New MMDeviceEnumerator() 
      Using mmdeviceCollection = mmdeviceEnumerator.EnumAudioEndpoints(DataFlow.Render, DeviceState.Active) 
       device = mmdeviceCollection.First 
      End Using 
     End Using 

     _waveSource = CodecFactory.Instance.GetCodec(filename).ToSampleSource().ToMono().ToWaveSource() 
     _soundOut = New WasapiOut(False, AudioClientShareMode.Exclusive, 100) With {.device = device} 
     _soundOut.Initialize(_waveSource) 
     _soundOut.Play() 

    End Sub 

End Module 

Public Class Main 



    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr 
End Function 

    Const WM_APPCOMMAND As UInteger = &H319 
    Const APPCOMMAND_VOLUME_MUTE As UInteger = &H8 

    Private Sub Beep_MouseDown(sender As Object, e As EventArgs) Handles Beep.MouseDown 
     Call Module1.Main() 
     'My.Computer.Audio.Play(My.Resources.Beep_effect, AudioPlayMode.BackgroundLoop) 
    End Sub 

    Private Sub Beep_MouseUp(sender As Object, e As EventArgs) Handles Beep.MouseUp 
     'My.Computer.Audio.Stop() 
    End Sub 

    Private Sub Silence_MouseDown(sender As Object, e As EventArgs) Handles Silence.MouseDown 
     SendMessage(Handle, WM_APPCOMMAND, &H200EB0, APPCOMMAND_VOLUME_MUTE * &H10000) 
    End Sub 

    Private Sub Silence_MouseUp(sender As Object, e As EventArgs) Handles Silence.MouseUp 
    SendMessage(Handle, WM_APPCOMMAND, &H200EB0, APPCOMMAND_VOLUME_MUTE * &H10000) 
    End Sub 
End Class 

Si vous avez d'autres questions il suffit de demander!

+0

Eh bien, ce ne joue qu'un fichier, ce ypu ont essayé de mettre en sourdine les autres? – Codexer

+0

@Codexer Je ne comprends pas ce que tu veux dire? Quels autres? – T54

+0

Ce que je veux dire, c'est que *** vous montrez seulement du code pour lire un fichier musical, pas pour couper d'autres programmes ***. S'il vous plaît montrer une tentative de ce que vous voulez accomplir et où il échoue, nous aidons avec des problèmes spécifiques. – Codexer

Répondre

3

Utilisez CSCore et AudioClientShareMode.Exclusive:

Imports CSCore 
Imports CSCore.Codecs 
Imports CSCore.CoreAudioAPI 
Imports CSCore.SoundOut 

Module Module1 

    Private filename As String = "your.mp3" 
    Private _waveSource As IWaveSource 
    Private _soundOut As ISoundOut 
    Private device As MMDevice 

    Sub Main() 

     Using mmdeviceEnumerator = New MMDeviceEnumerator() 
      Using mmdeviceCollection = mmdeviceEnumerator.EnumAudioEndpoints(DataFlow.Render, DeviceState.Active) 
       device = mmdeviceCollection.First 
      End Using 
     End Using 

     _waveSource = CodecFactory.Instance.GetCodec(filename).ToSampleSource().ToMono().ToWaveSource() 
     _soundOut = New WasapiOut(False, AudioClientShareMode.Exclusive, 100) With {.Device = device} 
     _soundOut.Initialize(_waveSource) 
     _soundOut.Play() 

    End Sub 

End Module 
+0

Merci pour la réponse. Il semble très complet et complet. Seulement j'ai du mal à comprendre comment cela s'intègre dans le code que j'ai présenté dans la question. S'il vous plaît pourriez-vous expliquer? – T54

+0

J'ai mis à jour le post pour montrer tout le code que j'ai jusqu'à présent mais je n'arrive pas à le faire fonctionner. J'ai installé le paquet et j'ai inséré le code mais ça ne marche pas, avez-vous d'autres suggestions? – T54

+0

@ T54 Etes-vous sûr d'avoir ajouté plus de code à votre message? – codeDom