Hallo Leute, wie der Titel schon sagt, möchte ich mittels eines C++ Programmes die Systemlautstärke des PC's ändern. Ich nutze Qt4. Am liebsten wäre es mir natürlich irgendeine lib von Qt zu verwenden, die dann auch für Linux etc. funktioniert. Jedoch habe ich da nichts richtiges gefunden. Phonon scheint mir nicht das richtige zu sein. Demnach suche ich jetzt erstmal nach einer Lösung für Windows 7 64bit. Dazu habe ich auch schon einiges im Netz gelesen. Zum Beispiel gibt es da ISimpleAudioVolume bei der angeblich nur Audioclient.h inkludiert werden muss. Oder auch Endpointvolume.h Leider scheitere ich schon daran, dass ich die jeweiligen .h Dateien anscheinend nicht habe! Muss ich um diese zu bekommen irgendetwas installieren oder irgendwo herunterladen? Falls es gleich eine bessere Lösung unter QT gibt bin ich dafür natürlich auch offen!
Die Header-Files liefert Microsoft immer im "Windows SDK" (ehemals "Platform SDK") aus: http://www.microsoft.com/en-us/download/details.aspx?id=8442 ...die sind allerdings für die Compiler von Microsoft ausgelegt ;D Du wirst übrigens vermutlich eher das hier suchen: http://msdn.microsoft.com/en-us/library/windows/desktop/dd370892(v=vs.85).aspx ...ISimpleAudioVolume ändert nur die Lautstärke einer Audio-Session, nicht die globale Lautstärke.
Ok super! Jetzt hab ich diese endpointvolume.h in einem Ordner unter Microsoft SDK. Bisher habe ich nie Bibliotheken einbinden müssen oder .h files von irgendwo anders benutzen müssen. Wie bekomme ich das jetzt hin? eine endpointvolume.lib oder so gibt es auch nicht. Was muss ich jetzt tun, damit ich diese .h datei benutzen kann?
Windows mal ganz ohne irgendwelches .Net geraffel .... http://msdn.microsoft.com/en-us/library/windows/desktop/dd756706(v=vs.85).aspx Stefan
Ich nutze die Audio Mixer Reference bereits unter Windows XP ohne Probleme. Doch nach meiner Recherche funktioniert dies nicht mehr unter Windows 7. Es läuft alles auf diese endpointvolume.h hinaus. Jedoch bekomme ich sie einfach nicht ins Projekt. Ich habe nun im .pro File diese Zeilen hinzugefügt INCLUDEPATH += C:/Program Files/Microsoft SDKs/Windows/v7.1/Include INCLUDEPATH += c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include LIBS += C:/Program Files/Microsoft SDKs/Windows/v7.1/Lib LIBS +=c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/lib Jedoch ohne Erfolg. Wenn ich in meiner main.cpp den include mit dem gesamten Pfad angebe #include "C:/Program Files/Microsoft SDKs/Windows/v7.1/Include/endpointvolume.h" Dann wird diese endpointvolume.h auch tatsächlich "angeschaut" aber es treten natürlich viele Fehler und Warnungen auf, da die includes in der endpointvolume.h nicht gefunden werden. Was kann ich noch tun?
IAudioEndpointVolume hat mit .NET nichts zu tun, das sind alles COM-Schnittstellen, die man von etlichen Programmiersprachen aus nutzen kann. Die Audio Mixer API ist seit Vista praktisch nur noch aus Kompatiblitätsgründen vorhanden. Windows SDK und Nicht-Microsoft-Compiler ist ziemlich ätzend - Oft werden die relevanten Teile aus den Headerfiles aus dem SDK einfach ins Projekt kopiert und an den jeweiligen Compiler angepasst. Ich würde einfach mit Visual Studio (z.b. der kostenfreien Express Edition) das Ding als DLL verpacken und dann die dll in deinem eigentlichen Projekt laden und nutzen. Vorgehensweise wäre: - windows.h einbinden, danach die jeweilige *.h (und ggf. lib) nach der msdn-Doku ("Mmdeviceapi.h" und "Endpointvolume.h" werden benötigt) - COM initialisieren: http://msdn.microsoft.com/en-us/library/windows/desktop/ms695279(v=vs.85).aspx - und dann der Doku folgen
Hier das ganze mal fix als Beispiel gebaut (Visual C++ Express 2010 Projekt): 1) DLL-Projekt "mastervol" (mastervol.dll): In der mastervol.cpp ist die Funktion SetMasterVolume() implementiert 2) Test-Projekt "mastervol_testapp": In der mastervol_testapp.cpp wird die DLL "mastervol.dll" geladen und die Funktion SetMasterVolume() aufgerufen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.