Hallo allerseits!
Wie kann ich sowohl unter XP als auch unter Vista das aktuelle Volume abfragen, bzw. ob Mute angeschaltet ist?
Im Englischem Forum hab ich nichts gefunden, dass unter beiden läuft...
Danke schon mal im Voraus
FROHE OSTERN!!!
Hallo allerseits!
Wie kann ich sowohl unter XP als auch unter Vista das aktuelle Volume abfragen, bzw. ob Mute angeschaltet ist?
Im Englischem Forum hab ich nichts gefunden, dass unter beiden läuft...
Danke schon mal im Voraus
FROHE OSTERN!!!
Meinst du vielleich die Funktion _Sound ??
MfG
Der_Doc
Ne, sondern das MAster Volume...
Sorry aber ich stehe auf dem Schlauch. Was meinst du mit MAster Volume?
Die Frage ist ernstgemeint.
MfG
Der_Doc
Siehst du rechts unten im Tray das Lautsprecher-Symbol? Das Volume, dass man da einstellen kann, davon
Ah jetzt weis ich was du von mir möchtest.
Das ist bestimmt wieder ein DLL aufruf oder vielleicht steht das in der Registry. Schau dochmal mit Regmon.
Wäre jetzt so eine Idee.
MfG
Der_Doc
Hi
ich nochmal.
Ich habe was gefunden, habe es aber nochnet getestet.
ZitatAlles anzeigenmute off
hurra!
es hat nun geklappt, für alle die es interessiert hier ist die Lösung.um sound unter windows abzuschalten bzw. einzuschalten muss der treiber abgeschaltet bzw. eingeschaltet werden.
Die änderung in registry muss wie folgt lauten\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi ce\aec
Start von 3 nach 4 ändern\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi ce\AudioSrv
Start von 2 nach 4 änderndas wars auch schon der treiber für sound device ist nun aus.
Werte
4 disable
3 manuel
2 automatic
1 system
0 bootDie startwerte kann man beliebig anpassen.
viel spass beim ausprobieren
MfG
Der_Doc
Wo hast du das denn her?
Aus und anschalten kann man doch ganz easy über
[autoit]Send
[/autoit]In einem Beitrag in einem Forum.
Wieso?
Wegen dem Send stimmt natürlich ... es gibt bestimt auch ne Tastenkombie für Mute.
MfG
Der_Doc
Tastenkombination
[autoit]Send('{VOLUME_MUTE}')
[/autoit]
Weil ich mir gerne alles angucken würde...
Gibt's auch :
[autoit]Send("{VOLUME_MUTE}")
[/autoit]Edit: Verdammt, zu langsam
Dachte ich mir doch
MfG
Der_Doc
In VIsta kann man das alles über COM-Objekte steuern. Ich hoffe, dass der Code stimmt: (kann ohne Vista ja nicht testen)
Für XP gibt es ja im englischen Forum was.
//Edit: entfernt.
Da werden zwei Funktionen mit zu vielen Parametern aufgerufen, lösche ich diese, gibt er mir an, das Volume wäre 0, obwohl es auf 100 ist
Gibt es keine einfache Möglichkeit z.B. den Lautsprecher-Slider versteckt auszulesen?
ich kann das ja heute vieleicht mal testen, bin ja Besitzter von Vista Home Premium.
MfG
Der_Doc
ICh auch
Bei mir funktioniert es nicht...
Edit: Was ist denn dieser Lautsprecher? Das dürfte doch ein Programm sein. Wie ruft man das auf? Irgendwo gibt es einen Pfad... Und wenn man den mit @SW_HIDE aufruft, müsste es doch gehen?
Hab nur das nachgebaut: http://blogs.msdn.com/larryosterman/…dows-vista.aspx
Weiß leider nicht, was da falsch ist
Für WinXP hatte ich mir mal folgendes Beispiel ( wahrscheinlich hier aus unserem Forum ) zur Seite gelegt:
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <WindowsConstants.au3>
#include <audio.au3>
Opt("GUIOnEventMode", 1)
HotKeySet("^+{F6}", "_exitVol")
Global $pos1[2] = [@DesktopWidth-3, @DesktopHeight/2 -108]
Global $pos2[2] = [@DesktopWidth-43, @DesktopHeight/2 -108]
Global $moved = False
$guiSpeaker = GUICreate("PC", 38, 256, $pos1[0], $pos1[1], BitOR($WS_MINIMIZEBOX,$WS_CAPTION, _
$WS_POPUP,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
$slVol = GUICtrlCreateSlider(8, 16, 20, 150, BitOR($TBS_VERT,$TBS_TOP,$TBS_LEFT,$TBS_NOTICKS))
GUICtrlSetOnEvent(-1, "slVolChange")
GUICtrlSetData(-1, 100-_SoundGetMasterVolume())
$cbMute = GUICtrlCreateCheckbox("", 11, 173, 17, 17)
GUICtrlSetOnEvent(-1, "cbMuteClick")
If _isMute() Then
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetState($slVol, $GUI_DISABLE)
EndIf
$Label1 = GUICtrlCreateLabel("Aus", 9, 194, 22, 17)
$cbMic = GUICtrlCreateCheckbox("", 11, 215, 17, 17)
GUICtrlSetOnEvent(-1, "cbMicClick")
$LabelMic = GUICtrlCreateLabel("Mic", 9, 234, 22, 17)
GUISetState(@SW_SHOW)
While 1
Sleep(100)
_checkPos()
WEnd
Func _exitVol()
Exit
EndFunc
Func cbMuteClick()
Local $id
If BitAND(GUICtrlRead($cbMic), $GUI_CHECKED) Then
$id = 5000
Else
$id = 1000
EndIf
If BitAND(GUICtrlRead($cbMute), $GUI_CHECKED) Then
GUICtrlSetState($slVol, $GUI_DISABLE)
_MuteVol($id)
Else
GUICtrlSetState($slVol, $GUI_ENABLE)
_UnMuteVol($id)
EndIf
EndFunc
Func cbMicClick()
If BitAND(GUICtrlRead($cbMic), $GUI_CHECKED) Then
WinSetTitle($guiSpeaker, '', 'MIC')
If Not _isMute(5000) Then
GUICtrlSetState($cbMute, $GUI_UNCHECKED)
Else
GUICtrlSetState($cbMute, $GUI_CHECKED)
EndIf
GUICtrlSetData($slVol, 100-_SoundGetMicrophoneVolume())
Else
WinSetTitle($guiSpeaker, '', 'PC')
If Not _isMute() Then
GUICtrlSetState($cbMute, $GUI_UNCHECKED)
Else
GUICtrlSetState($cbMute, $GUI_CHECKED)
EndIf
GUICtrlSetData($slVol, 100-_SoundGetMasterVolume())
EndIf
EndFunc
Func slVolChange()
If BitAND(GUICtrlRead($cbMic), $GUI_CHECKED) Then
_SoundSetMicrophoneVolume(100- GUICtrlRead($slVol))
Else
_SoundSetMasterVolume(100- GUICtrlRead($slVol))
EndIf
EndFunc
Func _checkPos()
Local $mouse = MouseGetPos()
If ($mouse[0] > $pos1[0]) Then
WinMove($guiSpeaker, '', $pos2[0], $pos2[1])
$moved = True
ElseIf $moved And ($mouse[0] < $pos1[0]-50) Then
WinMove($guiSpeaker, '', $pos1[0], $pos1[1])
$moved = False
EndIf
EndFunc
Func _MuteVol($opt = 1000)
Local $retVal = 0, $ex = False
If Not WinExists('[CLASS:Volume Control]') Then
Run('sndvol32', '', @SW_HIDE)
$ex = True
EndIf
If WinWait('[CLASS:Volume Control]', '', 2) = 0 Then Return -1
$retVal = ControlCommand('[CLASS:Volume Control]', '', $opt, 'isChecked')
If @error Then Return -2
If Not $retVal Then
ControlCommand('[CLASS:Volume Control]', '', $opt, 'Check')
If @error Then Return -2
EndIf
If $ex = True Then WinClose('[CLASS:Volume Control]')
Return
EndFunc ;==>_MuteVol
Func _UnMuteVol($opt = 1000)
Local $retVal = 0, $ex = False
If Not WinExists('[CLASS:Volume Control]') Then
Run('sndvol32', '', @SW_HIDE)
$ex = True
EndIf
If WinWait('[CLASS:Volume Control]', '', 2) = 0 Then Return -1
$retVal = ControlCommand('[CLASS:Volume Control]', '', $opt, 'isChecked')
If @error Then Return -2
If $retVal Then
ControlCommand('[CLASS:Volume Control]', '', $opt, 'UnCheck')
If @error Then Return -2
EndIf
If $ex = True Then WinClose('[CLASS:Volume Control]')
Return
EndFunc ;==>_UnMuteVol
Hier die notwendige "audio.au3":
autoit.de/wcf/attachment/4357/
Leider funktioniert das bei mir nicht
Ärgerlich...
Ich hab grad nochmal ne Seite mit den vTable-Definitionen gefunden. Ich glaub die Reihenfolge war falsch. Testet doch jetzt noch mal
( http://social.msdn.microsoft.com/forums/en-US/w…9-2e27eb9ec058/ )
//Edit: entfernt, neu weiter hinten