Forum: PC-Programmierung Lautstärke Win7 ändern mit Qt/c++


von Thomas Frosch (Gast)


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!

von bluppdidupp (Gast)


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.

von Thomas Frosch (Gast)


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?

von Stefan (Gast)


Lesenswert?

Windows mal ganz ohne irgendwelches .Net geraffel ....

http://msdn.microsoft.com/en-us/library/windows/desktop/dd756706(v=vs.85).aspx

Stefan

von Thomas Frosch (Gast)


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?

von bluppdidupp (Gast)


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

von bluppdidupp (Gast)


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.

von bluppdidupp (Gast)


Lesenswert?

...glatt die Datei vergessen ;D
http://www3.zippyshare.com/v/75262231/file.html

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
Noch kein Account? Hier anmelden.