| |
Fortgeschrittene ProgrammierungAktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Eremit | Datum: 07.05.18 09:40 |
| Hi there,
... meine Wenigkeit hat mittlerweile unzählige Code snippeds ausprobiert und ganze 3 Tage
damit verschwendet nach einer EINFACHEN und brauchbaren Lösung zu suchen ... wie Ihr euch denken
könnt ohne Erfolg .... leider bin ich doch nicht so smart wie ich dachte
anyway .... also hat jemand eine Idee wie sich der aktuelle Zustand/Status von
"Master mute" / "Speakers mute" abfragen lässt ??
Info: mit winmm.dll / mixer funktioniert es NICHT
( NICHT auf Win7 / Win8 ... XP/Win10 habe ich nicht getestet)
Tipp Mute:
( Mute ON/OFF je nach aktuellem Zustand ... funktioniert auf XP-SP3/Win7/Win8/Win10 )
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub MUTE()
KeybdEvent 173, 0, 0, 0
KeybdEvent 173, 0, 2, 0
End Sub
... habe es zufor noch mit SendKeys versucht aber das klappt nicht.
... eine ähnlich einfache kompakte Lösung für die Status-Abfrage währe prima.
Mit freundlichen Güßen
the Eremit | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Franki | Datum: 09.05.18 02:36 |
| Hallo,
die drei verschwendeten Tage sagen ja, dass da so einfach nicht ist. Vielleicht solltest du dir Gedanken darüber machen warum so etwas überhaupt möglich sein sollte und was für einen Nutzen bzw. Nachteile es für die User der Anwendung bietet.
Aus einer eigenen Anwendung heraus Windows bzw. Systemeinstellungen so tiefgreifend zu ändern sollte man nicht ohne guten Grund machen. Und wenn man solch einen Grund hat, dann sollte man den User vorher darüber informieren, er sollte entweder zustimmen oder ablehnen können, ob er damit einverstanden ist.
Und wenn ihm halt die Wahlmöglichkeit geben. Alles andere wird sich nicht durchsetzten auf Dauer.
Gruß
Frank | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Eremit | Datum: 09.05.18 08:24 |
| Hallo Franki,
... danke, daß Du Dir Zeit genommen hast.
Ich muss Dir grunsätzlich zustimmen und handhabe solche Dinge auch immer mit Vorsicht und Resepkt vor dem User.
Es soll eigentlich nur für 0.5 Sek. der Sound unterbunden werden um dem User einen nervigen beep zu ersparen.
Jetzt ist also mein Problem, daß ich eigentlich sicher stellen möchte die aktuellen Einstellungen NICHT zu verändern, daher ist es zwingend erforderlich den momentanen Status von mute abzufragen.
mute bereits aktiviert ---> gar nix ändern ... IST Zustand einfach beibehalten
mute nicht aktiviert ---> kurz den ton ausschalten und sofort wieder einschalten / IST Zustand wieder herstellen.
.... mhm ?
Nun habe ich im netz was gefunden: SoundVolumeView v1.81 von nirSoft ( freeware )
es handelt sich vermutlich um eine ActiveX.exe und alle darin beschriebenen "ToDo" Commandos
funktionieren tadellos.
z.B. Shell App.Path & "\SoundVolumeView.exe /Mute Lautsprecher
ABER ... da gibt es auch das Commando /GetMute welches 0/1 zurückgeben soll
( 0 = Not Muted / 1 = Muted )
... leider stehe ich da voll am Schlauch weill ich per Du nicht dahinter komme wie ich diesen
Rückgabewert abfragen/abfangen/auswerten kann.
bin schon etwas frustriert, daß ich zu wenig weiss bzw. so eine "simple Sache" sich so komliziert gestaltet.
... dennoch danke für Deine Rückmeldung
Frohes Schaffen
The Eremit | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Franki | Datum: 10.05.18 04:37 |
| Hallo,
Zitat: | | Es soll eigentlich nur für 0.5 Sek. der Sound unterbunden
werden um dem User einen nervigen beep zu ersparen. | |
Durch was in deinem Programm bzw. Useraktivität wird der Sound denn überhaupt ausgelöst? Vielleicht hier ein Ansatz?
http://www.vbarchiv.net/tipps/details.php?id=430
http://www.vbarchiv.net/tipps/details.php?id=1910
http://www.vbarchiv.net/tipps/details.php?id=904
Zitat: | |
ABER ... da gibt es auch das Commando /GetMute welches 0/1
zurückgeben soll
( 0 = Not Muted / 1 = Muted )
... leider stehe ich da voll am Schlauch weil ich per du
nicht dahinter komme wie ich diesen
Rückgabewert abfragen/abfangen/auswerten kann.
| |
Was steht denn in der Dokumentation? Ist dein "Commando" eine Funktion? Wenn ja steht auch in der Doku was deren Rückgabewerte sind. 0/1 kann auch True/False bedeuten z.B.
Zitat: | |
bin schon etwas frustriert, daß ich zu wenig weiss bzw. so
eine simple Sache sich so komliziert gestaltet.
| |
Na ja, da widersprichst du dir ja jetzt selbst. Du gestehst dir ein, dass du zu wenig Wissen hast, das stimmt. Aber andererseits behauptest du, dass dein Vorhaben simpel ist. Das passt nicht zusammen. Denn so einfach ist das nicht, mit wenig Wissen kann man einfach nicht an fortgeschrittene Aufgaben mit Erfolg heran gehen wenn man aufgrund des wenigen Wissens nicht einschätzen kann wie groß bzw. schwierig die Aufgabe eigentlich ist.
Und mal eben im Internet eine *.exe finden die das angeblich kann ist zwar schön und gut, aber dann muss die ja auch beim User installiert werden damit das funktioniert, das ist schon mit Kanonen auf Spatzen geschossen in deinem Fall und ob es Erfolg bring ist auch eine Frage die du dir selbst durch die Dokomentation im Web beantworten könntest.
Gruß
Frank | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Eremit | Datum: 10.05.18 05:13 |
| Hallo Franki,
... bei Dir muss man sehr präzise formulieren, was den meisten ( auch meiner Wenigkeit ),
scheinbar etwas schwer fällt
Danke für die links ... aber es handelt sich um den Signalton beim erscheinen einer MsgBox
daher das ganze zinober mit dem SystemSound ON/OFF
Ich arbeite an einem kleinen Program, welches eine andere Anwendung in speziellen Fällen
"fern steuern soll" bzw. tut es das bereits.
Diese Software ist sehr gut aufgebaut und hat eine eigene "scribt sprache" welche grunsätzlich sehr gut und auch umfangreich ist ... ABER ... es fehlen einige dinge .... bitte zwing mich nicht hier noch weiter ins Detail zu gehen.
anyway ...
Ich bin fast fertig, ...
Nur dieses Problem mit dem Sound fehlt mir noch, da ich ja nicht willkürlich dem User den Sound abschalten möchte ... Sound/Volume/Mixer ist einfach nciht mein Schwerpunkt bzw. habe ich mich damit noch nicht ausführlich befasst.
Ja Du hast recht .... ich bin auch nicht wirklich Glücklich über die Verwendung der fremd *.exe
Die Beschreibung hierzu ist recht oberflächlich und mager.
Wie bereits in einem der vorhergehenden Antworten funktionieren alle ToDo "Commands" einfach und einwandfrei
Shell ...\SoundVolumeView.exe /Mute Lautsprecher ' NICHT schön / NICHT profess. ... ect. I know
...\SoundVolumeView.exe /GetMute Lautsprecher liefert laut Beschreibung 0/1
https://www.nirsoft.net/utils/sound_volume_view.html
In combin. mit Shell bekomme ich nur eine irrazionale Zahl ( verm. Process ID oder hWnd ? )
Hättest Du da vielleicht ein einfache Lösung für mich ? .... BITTE
Mit freundlichen Grüßen und frohes Schaffen
The Eremit | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Kuno60 | Datum: 10.05.18 08:20 |
| Hallo Eremit,
wie du ja schon rausgefunden hast, kann man die Gesamtlautstärke mit "keybd_event", leiser und lauter machen und stummschalten. Das sollte auf jedem Rechner funktionieren.
Ein abfragen der aktuellen Werte ist so nicht möglich.
Wenn es aber nur um die Stummschaltung geht, gibt es einen kleinen Trick:
Wenn der Sound Stummgeschaltet ist und man die Tasten Leiser oder Lauter drückt, so wird die Stummschaltung aufgehoben.
keybd_event -> lauter - hebt die Stummschaltung auf und macht lauter
keybd_event -> leiser - setzt die Lautstärke wieder zurück
keybd_event -> mute - schaltet jetzt auf jeden Fall stumm!
Mit der winmm DLL lässt sich auf Win7 nur die Wave-Lautstärke abfragen und setzen, also auch die Soundausgabe des eigenen Programms. Hier muss man nur beachten, dass Windows diese Einstellungen beibehält, sie sind also dann auch für andere Programme gültig. | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Eremit | Datum: 11.05.18 01:54 |
| Hallo Kuno,
... danke, daß Du Dir Zeit genommen hast.
... ABER ... lasst uns doch mal auf die eigentliche Frage zurückkommen
WIE ?!
lässt sich der aktuelle/momentane Zustand des System Sound abfragen
... NICHT wie laut der Regler gerade gestellt ist (irrelevant)
NUR ... ist der System sound gerade mute oder unmute ( stumm oder nicht stumm geschaltet )
( ... ohne daß wir momtan irgentetwas veränder/verstellen )
... es muss doch irgent eine einfache Lösung geben
... man fragt ja eigentlich nur den Zustand einer "CheckBox" ab .... oder irre ich da ?
Mit freundlichen Grüßen
the Eremit | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Kuno60 | Datum: 11.05.18 10:12 |
| Hallo Eremit,
SoundVolumeView.exe hab ich gerade getestet. Alle Kommandos funktionieren bis auf die Get-Kommandos, die liefern keinen Wert.
Ansonsten hab ich nur eine Lösung für VB.Net gefunden, wie man die Werte für Lautstärke und Mute abfragen kann. | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Eremit | Datum: 11.05.18 11:06 |
| Hallo Kuno60,
... danke für Dein Bemühen ... aber bitte verschwende nicht noch mehr Zeit damit ...
meine Wenigkeit hatte das gleiche Problem mit der SVV.exe
Sicherlich weiß Jemand wie das richtig funktioniert ( event. auch mit der SVV.exe )
... LEIDER bin das nicht ich ( habe bereits viel zu viele Stunden mit Rechergen verbracht )
... es gibt nur 2 Möglichkeiten ... Wissen oder nicht Wissen
vielleicht haben Du/Wir ja Glück und es bequemt sich einer der obrigen "Götter des Wissen"
und bemüht sich unsere ach so "holen Krüge" mit ein klein wenig "Wasser des Wissen" zu füllen ...
Mit freundlichen Grüßen und frohes Schaffen
the Eremit | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Franki | Datum: 12.05.18 04:11 |
| Hallo,
Zitat: | |
... es gibt nur 2 Möglichkeiten ... Wissen oder nicht Wissen | |
Oder es gibt evtl, noch zwei weitere, nämlich möglich oder unmöglich.
Wenn es unmöglich mit VB6 ist bzw. mit diversen getesteten Zusatzprogrammen dann geht das halt so nicht wie gewünscht.
Die Radikalmethode wäre natürlich z.B. eine eigene Sound Datei z.B. Silent.wav mitzuliefern, vor Aufruf der MSG Box in der Registry auf diese umzustellen und nachher wieder auf die originale des Users zurück. (Erfordert natürlich die Berechtigung in der Registry schreiben zu dürfen)
Aber dennoch würden sich wahrscheinlich die meisten User dagegen wehren, dass du Manipulationen an deren Systemsound vornimmst.
Oder du baust halt ein eigenes Formular (was modal angezeigt wird) anstatt der MSG Box. Da hat der User das gleiche Feeling hört aber nicht. Setzt natürlich voraus, dass du die andere Anwendung beeinflussen kannst.
Gruß
Frank | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Eremit | Datum: 12.05.18 07:11 |
| Hallo Franki,
... immer wieder schön von Dir zu lesen, aber anscheinen kannst oder willst Du es nicht verstehen
... gerade um eine willkürliche "Manipulation" zu verhindern suche ich nach einen Lösung
den aktuellen Zustand abzufragen um den Sound auch WIRKLICH NUR für 0.5 Sekunden ab zu schalten
um dann unverzüglich die ursprünglichen Einstelleungen des Users wieder her zu stellen.
by the way ... Ich habe mittlerweile eine Lösung für mein Problem gefunden,
wenn auch nicht gerade perfekt, aber sie funktioniert ... vielleicht lade ich Sie mal als tipp hoch.
Letzendlich möchte ich noch anmerken ....
ohne daß meine Wenigkeit Dir zu nahe treten möchte, erspare mir, vielleicht auch vielen anderen,
Deine ach so nutzlosen "Zitate", ... wenn Du ernsthaft helfen möchtest .... BITTE gerne, wäre toll
... vielleicht weisst Du ja wirklich mehr als alle anderen, was ich an dieser Stelle bedauerlicher Weise stark anzweifeln möchte, dann schreib einen konkreten hilfreichen tipp.
Jedoch brauchbare tipps kommen von Deiner Seite eher selten, sovern mein Eindruck mich nicht täuscht, nachdem ich mehrere andere Beiträge gelesen habe.
... und wenn Du schon unbedingt, zwanghaft, großteils nutzloses blabla schreiben must, damit die
Welt bemerkt, daß Du existierst und um Deine, scheinbar fast schon zwanghaften Komplexe zu befriedigen, dann mach das doch wo anders ... ?
... einfach nervenschonenender für all jene welche sich hier wirklich bemühen einander zu helfen.
... wie auch immer
Mit freundlichen Grüßen und frohes Schaffen
the Eremit | |
Re: Aktuellen Status (master) mute abfragen ( System Sound aus ) | | | Autor: Kuno60 | Datum: 12.05.18 13:50 |
| Hallo Eremit,
ich hatte gerade die Idee, ob SoundVolumeView die Rückgaben über den ExitCode liefert... ja tatsächlich!
Ist zwar unüblich, da eine Rückgabe größer Null bedeutet, dass ein Fehler aufgetreten ist... naja SoundVolumeView macht es jedenfalls so.
''' <summary>
''' Liefert True, wenn stumm geschaltet ist.
''' </summary>
Function GetMute() As Boolean
Dim ps As New ProcessStartInfo
ps.FileName = "C:\Test\SoundVolumeView.exe"
ps.Arguments = "/GetMute ""Lautsprecher"""
ps.CreateNoWindow = True
Dim p = Process.Start(ps)
p.WaitForExit()
Return p.ExitCode = 1
End Function Das ist zwar VB.NET-Code, aber ich denke mal du weist, wie man das in VB6 macht.
Seit Vista steuert Windows den Sound über die Core-Audio-API. Diese lässt sich problemlos über VB.NET ansprechen und es kann Volume und Mute abgefragt und gesetzt werden. Ob man diese auch direkt in VB6 verwenden kann weis ich nicht. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|