Master Sound Level auslesen

  • Hallo!

    Für mein aktuelles Projekt möchte ich das "Sound Level" von Windows 7 auslesen.
    Bitte ganz genau lesen, bevor gepostet wird - ich möchte nicht den Lautstärkeregler auslesen!

    [Blockierte Grafik: http://pennywise.e-ee.de/Webcam/linkout…5_150709723.jpg] Der kleine grüne Balken, bzw. noch besser: der dunkelgraue Balken.

    Auf dem Bild sollte der graue Balken etwa den Wert ~10 haben, der grüne ~1.

    Habe das ganze bisher über MemoryRead gemacht - also den Speicher/RAM der SndVol.exe, allerdings ändert sich bei jedem Start des Programms auch die Adresse des Speichers. (Auch Pointer-Suche hat nichts gebracht, der Pointer "springt" die ganze Zeit, vermutlich, da mehrere dieser horizontalen Progressbars gefüttert werden.)

    Über DLLs und Windows-APIs habe ich auch nichts erreichen können - jedesmal kriege ich nur den Regler-Wert zu fassen.

    Für Vorschläge, Ideen oder ganze Lösungen wäre ich unheimlich dankbar! :)


    Solved in: http://www.autoitscript.com/forum/topic/142523-master-loudnessvolume-via-peak-meter-windows-7-64-bit/#

    Einmal editiert, zuletzt von Pennywise (21. Juli 2012 um 03:47)

  • Hat niemand eine Idee? Evtl. gibt es ja doch einen weg über MCIsendString oder die BASS-UDF.
    Das Umstellen der Treiber auf "What you hear" bzw. das Verwenden von StereoMix funktioniert leider auch nicht so richtig.

    Hat schonmal jemand probiert über die Control-Befehle / etc. an die Werte für die Progressbars zu kommen? (AU3Info spuckt leider nur den ersten Tab dabei aus)

  • Ich habe mich mit der Thematik noch nicht beschäftigt aber bringen dich die Informationen aus >>diesem Thread<< nicht wenigstens ein bisschen weiter?

    Das mit dem Peak-Meter habe ich mittlerweile tatsächlich auch gefunden, allerdings sitze ich momentan an dieser DLL: http://www.codeproject.com/Articles/18520…-Volume-Control

    Aber irgendwie kriege ich es nicht hin, den Code von C-Sharp (in Visual C# 2010 Express läuft das Programm tatsächlich einwandfrei) in AutoIt umzuwandeln. Die DLL lässt sich mit regsvr32 nicht registrieren (um via ObjCreate / COM zuzugreifen), und weder im PE-Explorer noch sonst einem DLL-Viewer werden mir Funktionen dieser DLL angezeigt.

    AutoItObject habe ich mir im laufe dieses Problems auch schon runtergeladen - werde gleich nochmal versuchen damit auf das Peak-Meter zuzugreifen.

  • [autoit]

    #include <AutoItObject.au3>

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

    Global $clsid = _AutoItObject_CLSIDFromString("{BCDE0395-E52F-467C-8E3D-C4579291692E}")
    Global $iid = _AutoItObject_CLSIDFromString("{A95664D2-9614-4F35-A746-DE8DB63617E6}")

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

    Global $plist
    _AutoItObject_CoCreateInstance(DllStructGetPtr($clsid), 0, 1, DllStructGetPtr($iid), $plist)

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

    Global $olist = _AutoItObject_WrapperCreate($plist, "GetPeakValue hresult();")

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

    MsgBox(0, @error, $olist.GetPeakValue())

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

    $olist = 0

    [/autoit]

    Ich beiße mir echt die Zähne dran aus - $olist wird einfach nicht zu einem Object. (ich denke mal, der Fehler liegt am zweiten Parameter von "WrapperCreate" - da bin ich einfach halbwegs ratlos - bin mir allerdings auch nicht sicher, ob die CLSID / IID absolute korrekt ist...

    http://msdn.microsoft.com/en-us/library/dd316561(VS.85).aspx

    Kann mir noch jemand nen Stups in die richtige Richtung geben? :D