Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1132to1136
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Lautstärke ändern per VBA

Lautstärke ändern per VBA
Franz
Guten Morgen Fachleute,
lässt sich die PC-Lautstärke per VBA ändern:
Lautstärke auf 100%
später wieder
Lautstärke auf 50%
Geht das? Und was muss ich bitte machen?
Danke schonmal und Grüße
Franz

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Lautstärke ändern per VBA
02.02.2010 09:35:11
Josef
Hallo Franz,

einfaches Beispiel, es wird immer zwichen 100% und 50% umgeschalten.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function waveOutSetVolume Lib "Winmm" (ByVal wDeviceID As _
  Integer, ByVal dwVolume As Long) As Integer

Sub toggleVolume()
  Dim intRet As Integer
  Static vol As Long
  
  vol = IIf(vol = -1, -32768, -1)
  intRet = waveOutSetVolume(0, vol)
End Sub

Gruß Sepp

Anzeige
AW: Lautstärke ändern per VBA
02.02.2010 09:51:13
Franz
Danke Sepp,
aber das hab ich wohl unklar geschrieben. Ich wollte nicht dauerndes Umschalten. Ich benötige nur den Code für 1 Wert, um die Anweisung für die jeweilige Höhe selbst an entsprechender Stelle eintragen zu können. Ich hab nur mal 100% und 50% als Beispiel genannt, um zu sehen, wie diese Werte angegeben werden.
Grüße
Franz
AW: Lautstärke ändern per VBA
02.02.2010 10:01:52
Josef
Hallo Franz,

dann so.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function waveOutSetVolume Lib "Winmm" (ByVal wDeviceID As _
  Integer, ByVal dwVolume As Long) As Integer

Sub setVolume(ByVal Volume As Integer)
  Dim intRet As Integer, vol As Long
  If Volume < 0 Then Volume = 0
  If Volume > 100 Then Volume = 100
  vol = Int(65535 / -100 * Volume)
  intRet = waveOutSetVolume(0, vol)
End Sub

Sub changeVolume()
  Dim intVolume As Integer, intRet As Integer
  
  intVolume = 50 '50% ,Wert zwischen 0 und 100!
  
  intRet = setVolume(intVolume)
End Sub

Gruß Sepp

Anzeige
Korrektur!
02.02.2010 10:04:39
Josef
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function waveOutSetVolume Lib "Winmm" (ByVal wDeviceID As _
  Integer, ByVal dwVolume As Long) As Integer

Sub setVolume(ByVal Volume As Integer)
  Dim intRet As Integer, vol As Long
  If Volume < 0 Then Volume = 0
  If Volume > 100 Then Volume = 100
  vol = Int(65535 / -100 * Volume)
  intRet = waveOutSetVolume(0, vol)
End Sub

Sub changeVolume()
  Dim intVolume As Integer, intRet As Integer
  
  intVolume = 50 '50% ,Wert zwischen 0 und 100!
  
  setVolume intVolume
End Sub

Gruß Sepp

Anzeige
AW: Lautstärke ändern per VBA
02.02.2010 10:11:03
Franz
Hallo Sepp,
danke, ich glaube so hätt ich's gern.
Aber es kommt noch die Fehlermeldung "Function oder Variable erwartet" - unterlegt ist "setVolume" in der Zeile
intRet = setVolume(intVolume)
Mach ich was falsch?
Danke und Grüße
Franz
siehe Korrektur! o.T.
02.02.2010 10:13:06
Josef
Gruß Sepp

AW: siehe Korrektur! o.T.
02.02.2010 10:23:11
Franz
Hallo Sepp,
danke, hab's schon, hab vorm Abschicken nicht mehr nachgeschaut.
Aber leider funktioniert's noch nicht richtig:
Auf "0" gestellt ergibt Lautsprecher aus, der ACER-Soundmanager zeigt 0 - das klappt.
Aber alle anderen Werte, egal ob 1 oder 100 ergeben immer die gleiche Lautstärke, und zwar die, die im ACER-SM für das "Gerät" als die höchste eingestellt ist.
Grüße
Franz
P.S.: kann erst in ca 1 Stunde wieder antworten - sorry
Anzeige
noch nicht
02.02.2010 12:06:52
Franz
Hallo Sepp,
also, es geht noch nicht, wie beschrieben:
Auf "0" gestellt ergibt Ton aus - wunderbar
Aber alle anderen Werte, egal ob 1 oder 100 ergeben immer die gleiche Lautstärke, und zwar die im System als höchste eingestellte. Hab ich im System 50% eingestellt, dann spielt er immer mit dieser Lautstärke. Hab ich 100% eingestellt, dann mit 100. Hab ich 10% eingestellt, dann mit 10.
Und wie gesagt, egal ich im Code 1 oder 100 oder irgendwas dazwischen eintrage!
Fragende Grüße
Franz
AW: noch nicht
02.02.2010 12:30:15
Josef
Hallo Franz,

dann probier's mal so.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function waveOutSetVolume Lib "Winmm" (ByVal wDeviceID As _
  Integer, ByVal dwVolume As Long) As Integer

Private Declare Function waveOutGetVolume Lib "Winmm" (ByVal wDeviceID As _
  Integer, dwVolume As Long) As Integer

Sub SetVolume(ByVal volume As Integer)
  Dim intRet As Integer, Vol As Long
  If volume < 0 Then volume = 0
  If volume > 100 Then volume = 100
  Vol = Int(655.35 * volume)
  intRet = waveOutSetVolume(0, Vol)
End Sub

Sub changeVolume()
  Dim intVolume As Integer, intRet As Integer
  
  intVolume = 100 '50% ,Wert zwischen 0 und 100!
  
  SetVolume intVolume
End Sub

Gruß Sepp

Anzeige
gut - fast sehr
02.02.2010 13:04:43
Franz
Hallo Sepp,
ja, super, jetzt wird die Lautstärke verändert, lauter oder leiser, wie gewählt.
Allerdings wird das prozentual innerhalb des Bereichs der System-Lautstärke gemacht. D. h.:
steht die Systemlautstärke auf voll: dann ergibt die Wahl "100" im Code auch volle Lautstärke, "30" ergibt 30% der Systemlautstärke.

Steht die Systemlautstärke aber nicht auf "voll", sondern z. B. auf halber Lautstärke:
jetzt ergibt die Vorwahl "100" nicht hundert Prozent der Systems, sondern nur 50 Prozent, also  _
das Maximum der eingestellten Systemlautstärke.
Vorwahl "30" ergibt dann also eine Lautstärke am unteren Ende der gesamtmöglichen Systemlautstärke.

Ich hoffe, ich konnte darstellen was passiert.
Gibt es auch die Möglichkeit, direkt auf die Systemlautstärke einzuwirken und diese absolut zu regeln?
Grüße
Franz
Anzeige
danke
03.02.2010 07:40:24
Franz
Hallo Sepp,
auch wenn's die große Lösung, Eingriff in die Gesamtsystemlautstärke nicht gibt, danke ich Dir trotzdem herzlichst, hast mir sehr geholfen! Auch damit bin ich schon einen Riesenschritt weiter.
Vielen Dank und Grüße
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige