2017-10-02 1 views
1

버튼을 누르고있는 동안 다른 모든 프로그램을 음소거하고 상수 톤/사운드를 재생하고 싶습니다.버튼을 누르는 동안 다른 프로그램을 모두 음소거

My.Recources 아래에 음색/소리가 녹음되어 있으며 Beep_effect이라고합니다.

대부분의 코드는 답변 중 하나이지만 아직 작동하지 않습니다. 다른 문의 사항이 있으시면

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 

물었습니다 :

내가 지금까지 가지고있는 코드입니다!

+0

음 만 파일을 재생, ypu 다른 사람을 음소거하려고 무엇을? – Codexer

+0

@Codexer 무슨 뜻인지 이해가 안 되니? 다른 무엇? – T54

+0

내 말은, *** 음악 파일을 재생하는 코드 만 표시하고 다른 프로그램은 음소거하지 않는 것입니다. ***. 원하는 것을 시도하고 실패한 부분을 보여 주면 특정 문제에 도움이됩니다. – Codexer

답변

3

사용 CSCoreAudioClientShareMode.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

답해 주셔서 감사합니다. 그것은 매우 완전하고 철저 해 보입니다. 나는 그 질문에 제시된 코드에 어떻게 맞는지 이해하기 위해 고심하고있다. 설명해 주시겠습니까? – T54

+0

필자는 지금까지 가지고있는 모든 코드를 보여주기 위해 게시물을 업데이트했지만 제대로 작동하지 않는 것 같습니다. 패키지를 설치하고 코드를 삽입했는데 창문이 작동하지 않는다면 다른 제안이 있습니까? – T54

+0

@ T54 게시물에 코드를 추가 했습니까? – codeDom

관련 문제