Lautstärke Win7 ändern mit Qt/c++

Gast #2805926
Lesenswert?

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!
Gast #2806086
Lesenswert?

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.
Gast #2806681
Lesenswert?

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?
Gast #2807716
Lesenswert?

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?
Gast #2808029
Lesenswert?

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
Gast #2808049
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren