Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

GesamtVolumen-Lautstärkeeinstellung in C/C++...

Mdl / 4 Antworten / Baumansicht Nickles

Ich suche für den XP eine Möglichkeit das GesamtVolumen von einem Programm aus einzustellen.

Mit Gesamtvolumen meine ich den Regler, der erscheint, wenn ich einmal auf den kleinen Lautsprecher in der Toolbar klicke. Oder, wenn ich zweimal darauf klicke, unter dem Regler 'Summe'.

Habe im Internet schon geschaut und ausprobiert. Das meiste hat nicht funktioniert. Vielleicht hat sich da ja was geändert zwischen den einzelnen Windows-Systemen.

Was funktioniert hat war


#include "mmsystem.hpp"
//
WORD volume=65535; //0..65535
//
TWaveOutCaps MyWaveOutCaps;
if(waveOutGetDevCapsW(WAVE_MAPPER, &MyWaveOutCaps, sizeof(MyWaveOutCaps))==MMSYSERR_NOERROR)
waveOutSetVolume((void *)WAVE_MAPPER, (DWORD(volume)*65536)|DWORD(volume));

nur, dass dies lediglich den WAVE-Regler entsprechend setzt.

Ist z.B. der 'Summen'-Regler auf 0, so ist die Position des WAVE-Reglers irrelevant: Es wird kein Sound ausgegeben.

Ich könnte mir vorstellen, dass in den Zeilen oben nur ein Parameter geändert werden muss, hatte aber mit meinen Versuchen bisher kein Glück...

Vielen Dank,

Mdl


bei Antwort benachrichtigen
Synthetic_codes Mdl „GesamtVolumen-Lautstärkeeinstellung in C/C++...“
Optionen

Wie wärs wenn du uns bitte die entsprechende entwicklungs umgebung präsentierst?

und der Datentyp sowie die verwendete funktion (in C++deutsch: Klasse und methode) sagen ja schon im Namen worum es geht: WaveOut. ICh würde also in der entsprechenden Headerdatei guggn was da sonst noch so definiert ist. Und damit dann ein wenig rumprobieren. Die Methoden und Klassen für die anderen Regler werden wahrscheinlich den gleichen Prototypen und damit die gleiche Bedienung haben.

'); DROP TABLE users;--
bei Antwort benachrichtigen
Mdl Synthetic_codes „Wie wärs wenn du uns bitte die entsprechende entwicklungs umgebung...“
Optionen

Ich benutze den C++-Builder.

Da dies aber (vermutlichst) über Windows-API-Aufrufe realisiert werden muss, spielt die Entwicklungsumgebung nur eine sehr untergeordnete (bis überhauptkeine) Rolle. Was auf der einen funktioniert, sollte auf der anderen fast 1:1 implementierbar sein.

> Die Methoden und Klassen für die anderen Regler werden wahrscheinlich den gleichen Prototypen und damit die gleiche Bedienung haben.

Tja, also ich bin nicht fündig geworden. Drum habe ich ja auch gefragt...

Gruß,

Mdl

bei Antwort benachrichtigen
Synthetic_codes Mdl „Ich benutze den C -Builder. Da dies aber vermutlichst über Windows-API-Aufrufe...“
Optionen

dass mit dem C++-Builder dachte ich mir schon irgendwo. daher kam mir das T am anfang des Datentyps so bekannt vor.
Dementsprechend verwendest du da auch wahrscheinlich incht direkt die winapi, da der C++-Builder eigene Klassen, im sinne von vereinfachungen bereitstellt. diese werden am ende selbstverständlich in WinAPI umgemünzt... Trotzdem würde ich mir den zugehörigen header mmsystem.hpp mal genauer anschauen...

'); DROP TABLE users;--
bei Antwort benachrichtigen
Mdl Synthetic_codes „dass mit dem C -Builder dachte ich mir schon irgendwo. daher kam mir das T am...“
Optionen

In einem Thread von CodeGear habe ich einen Verweis auf ein Delphi-Prg. gefunden:
http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_22856143.html

(Falls es irgendjemand hier interessieren sollte... ;-) )

Zwar nicht ein einfacher Funktionsaufruf, aber es klappt...

Grüße,

Mdl

bei Antwort benachrichtigen