Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Windows Systemlautstärke

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
20.03.2011, 11:26 Uhr
~Guasto
Gast


also, ich habe mich jetzt noch einmal umgeschaut und aus einem Forumsthread hier:
www.c-plusplus.de/forum/p983467
einfach mal abgeschrieben, folgenden Code habe ich jetzt:


C++:

#include <windows.h>
#include <Mmsystem.h>
int main(){
    
waveOutSetVolume(HWAVEOUT WAVE_MAPPER,0xFFFF);    
}




Jetzt scheint es wirklich ein Problem mit dem Linker zu geben, folgende Exception wirft dev aus:

[code]
[Linker error] undefined reference to `waveOutSetVolume@8'
ld returned 1 exit status
...\TEST DevC++\Makefile.win [Build Error] [Projekt1.exe] Error 1
[code]
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
20.03.2011, 11:35 Uhr
TOSHMAX



Mit HWAVEOUT kann man, wie der Name schon sagt, wave-Sounds abspielen. Wenn du 0 als Parameter übergibst, verändert das die Lautstärke aller Ausgaben.

Zu deinem Linker-Problem: Such mal nach Projekt-Optionen o. ä. und dann nach Linker. Ansonsten einfach mal danach googeln!

Hier mal ein kleines Beispiel, wie du es benutzen könntest:

C++:
// Setze die System-Lautstärke auf dem linken und rechten Ausgabe-Kanal in Prozent
void setMasterVolume(unsigned int leftVolume, unsigned int rightVolume)
{
    if(leftVolume > 100)
        leftVolume = 100;
    if(rightVolume > 100)
        rightVolume = 100;

    leftVolume  =  leftVolume * 0xFFFF / 100;
    rightVolume = rightVolume * 0xFFFF / 100;

    waveOutSetVolume(0, MAKELONG(leftVolume, rightVolume));
}

Dieser Post wurde am 20.03.2011 um 11:39 Uhr von TOSHMAX editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
20.03.2011, 15:19 Uhr
~Guasto
Gast


@TOSHMAX
Der Code ist klasse, keine Fehlermeldung vom kompiler, nachdem ich die winmm.lib eingebunden habe!
Danke dafür.
Soooo, also alles kompliiert, nur wenn ich die EXE starten will kommt folgende Fehlermeldung:

Der Prozedureinsprungpunkt "SMapLS" wurde in der DLL "KERNEL32.dll" nicht gefunden

also scheint da etwas mit der Kernel.dll nicht zu stimmen, habe ich vergessen, eine weitere .lib einzubinden?
Hilfe...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
20.03.2011, 15:46 Uhr
~Guasto
Gast


Noch etwas: Wenn ich die EXE vom Desktop aus starte, DANN kommt diese Fehlermeldung, wenn ich sie aus einem anderen Ordner starte, passiert gar nicht, es öffnet sich nur kurz das Konsolenfenster.
Und (um es noch etwas komplizierter zu machen) wenn ich es von der Konsole aus vom Desktop starte, kommt dieselbe Fehlermeldung, nur mit dem Unterschied, dass ich dieses mal wie vorgesehen einen parameter an das Programm übergebe.
Der aufruf sieht so aus:

1.: cd Desktop
2.: MASTER_VOLUME.exe 20

Wenn ich es aus dem anderen Ordner per Konsole aufrufe, passiert wieder gar nichts, die Lautstärke ändert sich nicht....

Ach und noch etwas:

Entweder ich bin zu doof, oder ich habe hier im Forum einen Bug gefunden.
Nämlich ist der Sicherheitscode beim ersten Versuch etwas zu posten IMMER falsch.
Und wenn ich es dann noch einmal versuche funktioniert der Knopf unten nicht mehr.
Muss das Forum immer neu aufrufen und die ganze Nachricht kopieren (jetzt auch wieder)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
20.03.2011, 20:03 Uhr
TOSHMAX



Welche Windows-Version hast du denn? In der MSDN steht, dass es die Funktion erst seit Windows 2000 besteht, aber ich kann fast nicht glauben, dass du eine noch ältere Version hast.

Ansonsten könnte man mal versuchen eine neuere winmm.dll zu verwenden. Aber um ehrlich zu sein, habe ich keine Ahnung .
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
21.03.2011, 07:15 Uhr
Tommix



'Morgen,
wenn ich es richtig verstehe, funktioniert das seit Windows Vista so nicht mehr:
www.codeproject.com/KB/vista/CoreAudio.aspx

Zitat:
... you are no longer controlling the master volume of the operating system...

Der Link enthält eine Lösung in C#.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
21.03.2011, 15:18 Uhr
~Guasto
Gast


Oh, schade, wo ich mich nun mit der lib und dev rumgeschlagen habe...
Aber egal, danke für die Info, ich hätte sonst wohl noch Wochen dran gesessen.
Also muss jetzt eine Lösung in C# her.
Auf der Seite, die du gepostet hast war ich auch schon (hab sogar den Sourcecode runtergeladen) nur leider kein bischen verstanden.
Ich finde einfach nicht die explizite Stelle, wo dem Betriebssystem gesagt wird, auf welche Stufe die Lautstärke gestellt werden soll.
Muss noch suchen (programmiere normalerweise auch net in C#^^)
Also, danke nochmal, ich schreibe, wenn ich die Lösung gefunden hab.

BOOOOAAAA, dieser sch*** Sicherheitscode!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
21.03.2011, 21:24 Uhr
Hans
Library Walker
(Operator)


Hi,


Zitat von ~Guasto:

Also muss jetzt eine Lösung in C# her.
...
(programmiere normalerweise auch net in C#^^)


hm... dann besorg Dir doch (zuerst einmal aus der Bibliothek) dieses Werk:

Da sollten die Informationen auch drin stehen, wobei man manchmal aber auch etwas suchen muss.


Zitat von ~Guasto:

Auf der Seite, die du gepostet hast war ich auch schon (hab sogar den Sourcecode runtergeladen) nur leider kein bischen verstanden.

sofern sich das nur auf's Englischen bezieht, ist der Google Translator manchmal ganz nützlich. Ansonsten, wenn es um die Zusammenhänge beim Programmieren geht, der Petzold.


Zitat von ~Guasto:

BOOOOAAAA, dieser sch*** Sicherheitscode!

Wenn Du damit den Sicherheitscode des Forums meinst, dann melde Dich doch einfach an. Kostet nix, und Du hast die Möglichkeit, Deinen Text noch mal zu korrigieren.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 21.03.2011 um 21:37 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: