System Lautstärke Auslesen

  • VB.NET

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

    System Lautstärke Auslesen

    Hallo Liebes Forum.. ja Ich weiss diese Beiträge gibt es schon oft genug, aber ich kriegs einfach nicht gebacken.. Ich möchte mir eine Sprachsteurung für meinen PC Zusammenbasteln, mit Lautstäkre verändern usw. Dafür brauch ich aber die Aktuelle Lautstärke von Windows. und wie lese ich diese jz aus? Verändern kann ich schon, nur das lesen fällt mir noch schwer.

    Tut mir leid wenn ich euch eure Zeit Klaue, aber ich würds gerne wissen. :(
    Mfg Ruffo
    [Allgemein] Systemlautstärke ändern

    [Release] SysVolume

    Ich hoffe ich konnte dir helfen :D
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Ohne die links zu lesen was man dort schon geschrieben hat muss ich sagen wenn du setzten kannst wirst du wohl auch auslesen können. setzten ist halt WaveoutSetVolume und holen müsste dann WaveoutGetVolume sein (wenn ich mich richtig errinnere).
    Und hier haste das erste google ergebnis: geekpedia.com/tutorial176_Get-…he-wave-sound-volume.html
    Und das kann man 1 zu 1 in vb übersetzen.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Was jetzt? also beim deinem Link DIngDong, wird da ja auch ein LInk gepostet von einem c# Code, womit man die Lautstärke auslesen kann. Jedoch Kriege ich es einfach nicht hin diesen c# in VB zu Convertiern. :(
    Das Lautstärke verändern hab ich ja schon, durch das Drücken der Syskeys.. Ich hätte am liebsten die SysVolume.DLL von Xprox. aber der Link ist ja leider down :(


    an TheFiloe: Ich setzte die Lautstärke ja mit den Systemkeys, und bei der einen Anleitung Krieg ich die da genante DLL nicht in die Projektmappe.. :/
    Bitte gib konkrete Fehlerangaben. Das heißt, gib an WAS beim konvertieren nicht funktioniert.
    Welche Fehler treten auf? Wo treten diese auf?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Warscheinlich ist es nur dieser Teil den ich nicht weis wie ich den Konvertiere:

    Quellcode

    1. MMDeviceEnumerator devEnum = new MMDeviceEnumerator();
    2. MMDevice defaultDevice =
    3. devEnum.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
    Du musst keinen zusätzlichen verweis erstellen.
    winmm.dll ist eine SystemBibliothek da wirste in 1000 jahren aus .net keinen verweis drauf bekommen. mach einfach das was dort steht.
    Kann doch nicht so schwer dein diesen code zu kopieren:

    Quellcode

    1. [code=vbnet]Imports System.Collections.Generic
    2. Imports System.ComponentModel
    3. Imports System.Data
    4. Imports System.Drawing
    5. Imports System.Text
    6. Imports System.Windows.Forms
    7. Imports System.Runtime.InteropServices
    8. Namespace VolumeControl
    9. Public Partial Class Form1
    10. Inherits Form
    11. <DllImport("winmm.dll")> _
    12. Public Shared Function waveOutGetVolume(hwo As IntPtr, ByRef dwVolume As UInteger) As Integer
    13. End Function
    14. <DllImport("winmm.dll")> _
    15. Public Shared Function waveOutSetVolume(hwo As IntPtr, dwVolume As UInteger) As Integer
    16. End Function
    17. Public Sub New()
    18. InitializeComponent()
    19. ' By the default set the volume to 0
    20. Dim CurrVol As UInteger = 0
    21. ' At this point, CurrVol gets assigned the volume
    22. waveOutGetVolume(IntPtr.Zero, CurrVol)
    23. ' Calculate the volume
    24. Dim CalcVol As UShort = CUShort(CurrVol And &Hffff)
    25. ' Get the volume on a scale of 1 to 10 (to fit the trackbar)
    26. trackWave.Value = CalcVol \ (UShort.MaxValue \ 10)
    27. End Sub
    28. Private Sub trackWave_Scroll(sender As Object, e As EventArgs)
    29. ' Calculate the volume that's being set
    30. Dim NewVolume As Integer = ((UShort.MaxValue \ 10) * trackWave.Value)
    31. ' Set the same volume for both the left and the right channels
    32. Dim NewVolumeAllChannels As UInteger = ((CUInt(NewVolume) And &Hffff) Or (CUInt(NewVolume) << 16))
    33. ' Set the volume
    34. waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels)
    35. End Sub
    36. End Class
    37. End Namespace
    [/code]


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Könntest du bitte deinen code hier posten falls jmd. Danach sucht und später dieses Thema aufruft.

    Warum frage ich das?
    Ich stelle diese Frage weil mich dein Code sehr interessieren würde und weil ich ihn vielleicht benötige. Und da Fragen über die Systemlautstärke in letzter Zeit öfters gestellt werden.
    Danke
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Würd ich gerne... aber er Funktioniert noch nicht wirklich :/

    Ich schick mal das was ich hab:

    Kompletter 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. Declare Function waveOutGetVolume Lib "winmm.dll" ( _
    10. ByVal uDeviceID As Long, _
    11. ByVal lpdwVolume As Long) As Long
    12. Private Declare Sub keybd_event Lib "user32" _
    13. (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
    14. Const KEYEVENTF_KEYDOWN As Integer = 0
    15. Const KEYEVENTF_KEYUP As Integer = 2
    16. ' Class Lautstärke
    17. Public Class Lautstaerke
    18. 'Windows zugriff
    19. Private Declare Sub keybd_event Lib "user32" _
    20. (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
    21. Const KEYEVENTF_KEYDOWN As Integer = 0
    22. Const KEYEVENTF_KEYUP As Integer = 2
    23. ' Lauter
    24. Public Shared Sub Leiser()
    25. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeDown), 0, KEYEVENTF_KEYDOWN, 0) ' Taste runter
    26. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeDown), 0, KEYEVENTF_KEYUP, 0) ' Taste rauf
    27. End Sub
    28. ' Leiser
    29. Public Shared Sub Lauter()
    30. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeUp), 0, KEYEVENTF_KEYDOWN, 0)
    31. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeUp), 0, KEYEVENTF_KEYUP, 0)
    32. End Sub
    33. ' Mute
    34. Public Shared Sub Stumm()
    35. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeMute), 0, KEYEVENTF_KEYDOWN, 0)
    36. Call keybd_event(CByte(System.Windows.Forms.Keys.VolumeMute), 0, KEYEVENTF_KEYUP, 0)
    37. End Sub
    38. End Class
    39. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    40. Dim Stimmen As List(Of String) = nSpeech.SpeechOutput.GetVoices()
    41. Dim Output As New nSpeech.SpeechOutput(Stimmen(0))
    42. Dim Wörter() As String = New String() {"Lauter", "Leiser", "Stumm", "Heute ist der?", "On", "Leiser start", "Leiser stop", "Lauter start", "Lauter stop", "Uhrzeit?"}
    43. Dim Input As New nSpeech.SpeechInput(Sub(Text As String)
    44. If Text = "Lauter" Then
    45. Output.SpeakAsync("Volume UP")
    46. ElseIf Text = "Leiser" Then
    47. Output.SpeakAsync("volume down")
    48. Lautstaerke.Leiser()
    49. ElseIf Text = "Leiser start" Then
    50. Output.SpeakAsync("volume down starts")
    51. leiserdown.Start()
    52. ElseIf Text = "Leiser Stop" Then
    53. Output.SpeakAsync("volume down stops")
    54. leiserdown.Stop()
    55. ElseIf Text = "Lauter start" Then
    56. Output.SpeakAsync("volume up starts")
    57. lauterup.Start()
    58. ElseIf Text = "Lauter Stop" Then
    59. Output.SpeakAsync("volume up stops")
    60. lauterup.Stop()
    61. ElseIf Text = "Stumm" Then
    62. Output.Speak("Volume Stop")
    63. Lautstaerke.Stumm()
    64. ElseIf Text = "On" Then
    65. Lautstaerke.Stumm()
    66. Output.Speak("Volume Start")
    67. ElseIf Text = "Heute ist der?" Then
    68. Dim heutm As String = Format(Now.Month, "0")
    69. Dim heutd As String = Format(Now.Day, "00")
    70. Dim heuty As String = Format(Now.Year)
    71. Output.SpeakAsync(heutd + "Point" + heutm + "point" + heuty)
    72. ElseIf Text = "Uhrzeit?" Then
    73. Dim heuts As String = Format(Now.Hour, "0")
    74. Dim heutm As String = Format(Now.Minute, "00")
    75. Output.SpeakAsync("It's" + heuts + "O'clock" + heutm)
    76. End If
    77. End Sub, Wörter)
    78. End Sub
    79. Private Sub leiserdown_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles leiserdown.Tick
    80. Lautstaerke.Leiser()
    81. End Sub
    82. Private Sub Lauterup_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lauterup.Tick
    83. Lautstaerke.Lauter()
    84. End Sub
    85. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    86. Dim CurrVol As UInteger = 0
    87. waveOutGetVolume(IntPtr.Zero, CurrVol)
    88. Dim CalcVol As UShort = CUShort(CurrVol And &HFFFF)
    89. TrackBar1.Value = CalcVol / (UShort.MaxValue \ 10)
    90. Label1.Text = Format(TrackBar1.Value) + " %"
    91. End Sub
    92. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    93. Dim NewVolume As Integer = ((UShort.MaxValue \ 10) * 8)
    94. ' Set the same volume for both the left and the right channels
    95. Dim NewVolumeAllChannels As UInteger = ((CUInt(NewVolume) And &HFFFF) Or (CUInt(NewVolume) << 16))
    96. ' Set the volume
    97. waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels)
    98. MsgBox(NewVolumeAllChannels)
    99. End Sub
    100. End Class




    Nur Auslesen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. Dim CurrVol As UInteger = 0
    3. waveOutGetVolume(IntPtr.Zero, CurrVol)
    4. Dim CalcVol As UShort = CUShort(CurrVol And &HFFFF)
    5. TrackBar1.Value = CalcVol / (UShort.MaxValue \ 10)
    6. Label1.Text = Format(TrackBar1.Value) + " %"
    7. End Sub


    (klappt leider nicht)


    Nur Einfügen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim NewVolume As Integer = ((UShort.MaxValue \ 10) * 8)
    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)
    7. MsgBox(NewVolumeAllChannels)
    8. End Sub


    naja, kann auch an meiner Sounkarte liegen, weil de richtigen sound fängtb der ja ab.. oder drana das ich gerade in skype bin
    werds mal anders testen

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

    Habe noch einen Wunsch, füge bitte ein VB-Tag ein
    [VB 2010] DataGridView einzelne Spalten und Zeilen auslesen
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    DAS waveOutGetVolume arbeitet Zwar unterneinander, aber die Lautstärke an sich verändert sich nicht :/ lässt sich auch nicht ausslesen

    Sprich wenn ich die WAveOutGetVolume Nutze, zeigt der bei GET zwar den richtigen Wert an, aber der Wird nicht bei den WIndows EInstellungen geändert

    1 = Vorher 2= NachChange des Waveout

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