System Lautstärke Auslesen

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    Gib mal dein projekt dann kann man sich auch was vorstellen.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „thefiloe“ ()

    Habs jz so das ich das nichtmehr brauche mit dem Auslesen :) das der immer abgestürtr ist sobald die Lautstärke voll war, war nen ajnderer Fehler. Nun leuft alles Super ohne Probleme..

    Der Code:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. <DllImport("winmm.dll")> _
    4. Public Shared Function waveOutGetVolume(ByVal hwo As IntPtr, ByRef dwVolume As UInteger) As Integer
    5. End Function
    6. <DllImport("winmm.dll")> _
    7. Public Shared Function waveOutSetVolume(ByVal hwo As IntPtr, ByVal dwVolume As UInteger) As Integer
    8. End Function
    9. Private Declare Sub keybd_event Lib "user32" _
    10. (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
    11. Const KEYEVENTF_KEYDOWN As Integer = 0
    12. Const KEYEVENTF_KEYUP As Integer = 2
    13. Private perfCounter As System.Diagnostics.PerformanceCounter
    14. ' Class Lautstärke
    15. Public Class Lautstaerke
    16. 'Windows zugriff
    17. Private Declare Sub keybd_event Lib "user32" _
    18. (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
    19. Const KEYEVENTF_KEYDOWN As Integer = 0
    20. Const KEYEVENTF_KEYUP As Integer = 2
    21. ' Lauter
    22. Public Shared Sub Leiser()
    23. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeDown), 0, KEYEVENTF_KEYDOWN, 0) ' Taste runter
    24. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeDown), 0, KEYEVENTF_KEYUP, 0) ' Taste rauf
    25. End Sub
    26. ' Leiser
    27. Public Shared Sub Lauter()
    28. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeUp), 0, KEYEVENTF_KEYDOWN, 0)
    29. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeUp), 0, KEYEVENTF_KEYUP, 0)
    30. End Sub
    31. ' Mute
    32. Public Shared Sub Stumm()
    33. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeMute), 0, KEYEVENTF_KEYDOWN, 0)
    34. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeMute), 0, KEYEVENTF_KEYUP, 0)
    35. End Sub
    36. End Class
    37. Dim leiser1 As Boolean = False
    38. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    39. Dim Stimmen As List(Of String) = nSpeech.SpeechOutput.GetVoices()
    40. Dim Output As New nSpeech.SpeechOutput(Stimmen(1))
    41. perfCounter = New System.Diagnostics.PerformanceCounter
    42. perfCounter.CategoryName = "Processor"
    43. perfCounter.CounterName = "% Processor Time"
    44. perfCounter.InstanceName = "_Total"
    45. Dim Wörter() As String = New String() {"Lauter", "Leiser", "Stumm", "Heute ist der?", "On", "Leiser start", "Leiser Stop", "Lauter start", "Lauter Stop", "Uhrzeit?", "Meine Notizen?", "Wie geht es dir?", "Zeit", "Datum?"}
    46. Dim Input As New nSpeech.SpeechInput(Sub(Text As String)
    47. If Text = "Lauter" Then
    48. Output.Speak("Lautstärke erhöht")
    49. Lautstaerke.Lauter()
    50. ElseIf Text = "Leiser" Then
    51. Output.Speak("Lautstärke verringert")
    52. Lautstaerke.Leiser()
    53. Output.Speak("Lautstärke verringert")
    54. ElseIf Text = "Leiser start" Then
    55. Output.Speak("Lautstärke verringern Startet")
    56. leiser1 = True
    57. ElseIf Text = "Leiser Stop" Then
    58. leiser1 = False
    59. Output.Speak("Lautstärke verringert Stopt")
    60. ElseIf Text = "Lauter start" Then
    61. lauterup.Start()
    62. Output.Speak("Lautstärke erhöhen startet")
    63. ElseIf Text = "Lauter Stop" Then
    64. lauterup.Stop()
    65. Output.Speak("Lautstärke erhöhen stopt")
    66. ElseIf Text = "Stumm" Then
    67. Output.Speak("Lautstärke auf Stumm geschaltet")
    68. Lautstaerke.Stumm()
    69. ElseIf Text = "On" Then
    70. Lautstaerke.Stumm()
    71. Output.Speak("Lautstärke angeschaltet")
    72. ElseIf Text = "Heute ist der?" Or Text = "Datum?" Then
    73. Dim heutm As String = Format(Now.Month, "0")
    74. Dim heutd As String = Format(Now.Day, "00")
    75. Dim heuty As String = Format(Now.Year)
    76. Output.Speak(heutd + "." + heutm + "." + heuty)
    77. ElseIf Text = "Zeit" Or Text = "Uhrzeit?" Then
    78. Dim heuts As String = Format(Now.Hour, "0")
    79. Dim heutm As String = Format(Now.Minute, "00")
    80. Output.Speak("Es ist" + heuts + "Uhr" + heutm)
    81. ElseIf Text = "Meine Notizen?" Then
    82. Dim textnot As String = TextBox1.Text
    83. If textnot = "" Then
    84. Output.Speak("Es sind keine Notizen Vorhanden!")
    85. Return
    86. Else
    87. Output.Speak(textnot)
    88. End If
    89. ElseIf Text = "Wie geht es dir?" Then
    90. Dim a As Integer = Integer.Parse(Format(perfCounter.NextValue, "##0"))
    91. Output.SpeakAsync("Meine Prozessor Auslastung ist bei" + Format(a) + "Prozent!")
    92. ProgressBar1.Value = a
    93. Label3.Text = Format(a) + "%"
    94. Return
    95. End If
    96. End Sub, Wörter)
    97. End Sub
    98. Private Sub leiserdown_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles leiserdown.Tick
    99. If leiser1 = True Then
    100. Lautstaerke.Leiser()
    101. Else
    102. Return
    103. End If
    104. End Sub
    105. Private Sub Lauterup_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lauterup.Tick
    106. Lautstaerke.Lauter()
    107. End Sub
    108. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    109. End Sub
    110. End Class




    Anbei die Form:



    PS: Den Code schreib ich wenn ich Fertig bin noch übersichtlicher usw, also nicht Darüber Wundern :D Bin eigendlich PHP Html und javascript Programmierer.

    MDf Ruffo
    Hier bitte:

    Das Gui ist auch noch nicht Fertig :D Kommt noch nen Player und so rein

    PS: Du musst die nSpeech.dll warscheinlich neu einweisen schätze ich oder? :D Hab die mit in die RAR gefügt.

    PS2: Hab mir für die Sprachausgabe extra ne Deutsche PSrache Runtergeladen.. Du müsstest in dieser Zeile die 1 auf die Null umändern.

    VB.NET-Quellcode

    1. Dim Output As New nSpeech.SpeechOutput(Stimmen(1))


    Bei mir ist das Zeile 51.
    Dateien
    • System.rar

      (128,52 kB, 88 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ruffo“ ()

    Verwende vll erstmal anständige aufrufe und nicht Tasten simulationen....

    Die WinAPI Deklarationen reinschreiben bringt recht wenig wenn diese nicht aufgerufen werden... nochmal :geekpedia.com/tutorial176_Get-…he-wave-sound-volume.html


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Klappt nicht :/

    VB.NET-Quellcode

    1. ' Calculate the volume that's being set
    2. Dim NewVolume As Integer = ((UShort.MaxValue \ 10) * trackBar1.Value)
    3. ' Set the same volume for both the left and the right channels
    4. Dim NewVolumeAllChannels As UInteger = ((CUInt(NewVolume) And &HFFFF) Or (CUInt(NewVolume) << 16))
    5. ' Set the volume
    6. waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels)




    Könnte das daran Liegen, das ich mehrere Wiedergabegeräte gleichzeitig im Betrieb hab?
    Nein kann es nicht. Setz mal nen breakpoint auf der letzten Zeile und schau was für nen Wert als 2. Paramter übergeben wird.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.