Lautstärke abrufen

  • Hallo =)

    Ich würde gerne wissen, wie man die Lautstärke abrufen kann. Also bei Windows in der Taskleiste rechts unten (falls nichts verändert); da kann man schauen wie viel % die Lautstärke im Moment hat. Und genau diese Zahl muss das Programm selbst herausfinden, nur wie? =)


    Unwichtig:
    Folgender Fall:
    Da ich aber immer gerne zum einschlafen noch Musik höre, müsste das Programm automatisch dann die Lautstärke auf z.B. 10% setzen. Das würde mir dann einiges an Arbeit ersparen =)
    Ich weiß inzwischen auch, wie man die Lautstärke erhöhen oder erniedrigen kann. [Send ("{Volume_Up}")]

    Mit sehr freundlichen Grüßen
    MasterRobb

    Lächel, du kannst sie nicht alle töten.

  • Ist schon was älter, musst gucken, obs noch funktioniert...

    [autoit]

    Func _SoundGetWaveVolume()
    Local $WaveVol = -1, $p, $ret
    Const $MMSYSERR_NOERROR = 0
    $p = DllStructCreate ("dword")
    If @error Then
    SetError(2)
    Return -2
    EndIf
    $ret = DllCall("winmm.dll", "long", "waveOutGetVolume", "long", -1, "long", DllStructGetPtr ($p))
    If ($ret[0] == $MMSYSERR_NOERROR) Then
    $WaveVol = Round(Dec(StringRight(Hex(DllStructGetData ($p, 1), 8), 4)) / 0xFFFF * 100)
    Else
    SetError(1)
    EndIf
    $p=""
    Return $WaveVol
    EndFunc ;==>_SoundGetWaveVolume

    [/autoit]

    Lautstärke setzen geht mit

    [autoit]

    SoundSetWaveVolume()

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Falls du noch mehr Funktionen dieser Art benötigst, versuchs mal mit der BASS.au3
    So würde das dann aussehen:

    Spoiler anzeigen
    [autoit]

    #include <Bass.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _BASS_STARTUP ()
    _BASS_Init (0, -1, 44100, 0, "")

    [/autoit] [autoit][/autoit] [autoit]

    If @error Then
    MsgBox(0, "Error", "Could not initialize audio")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox (64,"BASS.au3:","Aktuelle Systemlautstärke: "&Round (_BASS_GetVolume()*100)&"%")

    [/autoit] [autoit][/autoit] [autoit]

    Func OnAutoItExit()
    _BASS_Free()
    EndFunc ;==>OnAutoItExit

    [/autoit]

    Und hier bekommst du immer die aktuelle Version der BASS.au3: http://www.signa5.com/autoit/BASS/BASS.zip

    Edit: @ L3viathan2142: Bei deinem Beispiel gibt mir die Funktion immer 100 zurück, egal wie ich die Lautstärke ändere. Wenn ich versuche die Lautstärke mit
    SoundSetWaveVolume() zu setzen bekomme ich zwar diesen Wert, aber die Lautstärke ändert sich nicht.

  • Dann benutzt du sicherlich Windows Vista
    oder 7. Denn da nutzt dir die Funktion nichts.
    Es wird nur die Lautstärke des Skriptes
    geregelt, jedoch nicht die Wave-Lautstärke,
    also die Gesamtlautstürke. Bei XP funktioniert
    das einwandfrei. ;)

    https://autoit.de/dokumentation_…tWaveVolume.htm


    MfG
    qixx

  • Wie Oscar auch selbst schon geschrieben hat: Es funktioniert allerdings nicht bei Windows7 64-Bit
    hmm xD... Doof gelaufen? xD - Ich habe Windows 7 64-Bit... ;D
    Also bei mir gibt das leider immer "70" raus... ;D
    Und die anderen haben bei mir leider nicht funktioniert =)

    Bitte um weiter Vorschläge =)

    Dennoch danke an eure Bemühungen!

    Lächel, du kannst sie nicht alle töten.