Tonausgabe komplett abschalten
Hi @ll,
ich will von Windows den kompletten Ton ausschalten... Also so, wie wenn man beim Hauptlautstärkeregler auf "Ton aus" klickt... Das geht doch bestimmt über die WinAPI... Aber wie? |
Re: Tonausgabe komplett abschalten
Ein Fall für die Mixer-Controls, mixerOpen, etc.
|
Re: Tonausgabe komplett abschalten
ich hab den Ton bisher so abgeschalten in einem meiner Programme:
Delphi-Quellcode:
class function TDeskSwitcher.SetMute(AMute: Boolean): Boolean;
function GetMasterMute(AMixer: hMixerObj; var AMixerControl: TMixerControl): Boolean; var LMixerLine: TMixerLine; LMixerLineCtrls: TMixerLineControls; begin ZeroMemory(@LMixerLine, SizeOf(LMixerLine)); LMixerLine.cbStruct := SizeOf(LMixerLine); LMixerLine.dwComponentType := MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; if mixerGetLineInfo(AMixer, @LMixerLine, MIXER_GETLINEINFOF_COMPONENTTYPE) = MMSYSERR_NOERROR then begin ZeroMemory(@LMixerLineCtrls, SizeOf(LMixerLineCtrls)); LMixerLineCtrls.cbStruct := SizeOf(LMixerLineCtrls); LMixerLineCtrls.dwLineID := LMixerLine.dwLineID; LMixerLineCtrls.cControls := 2; LMixerLineCtrls.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE; LMixerLineCtrls.cbmxctrl := SizeOf(AMixerControl); LMixerLineCtrls.pamxctrl := @AMixerControl; result := MMSYSERR_NOERROR = mixerGetLineControls(AMixer, @LMixerLineCtrls, MIXER_GETLineCONTROLSF_ONEBYTYPE); end else result := False; end; var LMasterControl: TMixerControl; LDetails: TMixerControlDetails; LBoolDetails: TMixerControlDetailsBoolean; begin if GetMasterMute(0, LMasterControl) then begin with LDetails do begin cbStruct := SizeOf(LDetails); dwControlID := LMasterControl.dwControlID; cChannels := 1; cMultipleItems := 0; cbDetails := SizeOf(LBoolDetails); paDetails := @LBoolDetails; end; LongBool(LBoolDetails.fValue) := AMute; result := MMSYSERR_NOERROR = mixerSetControlDetails(0, @LDetails, MIXER_SETCONTROLDETAILSF_VALUE); end else result := False; end; |
DP-Maintenance
Dieses Thema wurde von "SirThornberry" von "Windows API / MS.NET Framework API" nach "Multimedia" verschoben.
|
Re: Tonausgabe komplett abschalten
Zitat:
Nur dass class davor weg und den Funktionsname ändern und alles ist super *gg*. Und
Delphi-Quellcode:
uses MMSystem;
|
Re: Tonausgabe komplett abschalten
Ja, so kann mans auch machen :cyclops:
:idea: Das kannste doch gleich in die CodeLib stellen, wenn Du yankees Änderungen machst und "TDeskSwitcher". entfernst :zwinker: |
Re: Tonausgabe komplett abschalten
Gibt es auch eine Möglichkeit einzelnen Programmen/DLLs zu Muten
ich würde gerne Flash(.swf) dauerhaft stumm schalten (Adobe/Macromedia bietet diese Einstellung leider nicht) ebenso alles andere was im Browser geöffnet wird (Sprich Firefox stumm schalten / mein Soundblocker greift leider nicht alles) 2 Spiele würd ich gleich noch mit auf die Liste setzen :) also kann man einer Anwendung verbieten nen Muks zu machen? WinAmp sollte aber weiter hörbare :) Musik von sich geben können |
Re: Tonausgabe komplett abschalten
Zitat:
|
Re: Tonausgabe komplett abschalten
Hi Leuts,
dieses MasterMute Dings hab ich bisher auch benutzt, ist aber unter Vista leider alles Banane :gruebel: Ich krieg Windows nicht dazu, die Lautsprecher abzuschalten, auch das Systray-Icon reagiert nicht. Was funktioniert, ist die Abschaltung über das Keyboard :!:, Es muss doch möglich sein, irgendwie diese APPCOMMAND_VOLUME_MUTE Message auch per Programm zu generieren und an .... wen eigentlich :?: zu senden. Hat da irgendwer der Experten einen Tip ? Bevor hier jemand vorschnell antwortet: Unter XP läuft alles wie hier beschrieben, es geht hier NUR um Win Vista ! Gruß, Harry |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz