vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Aktuellen 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel