Bestimmen Sie, ob Windows gerade Ton wiedergibt

8

Also habe ich eine Weile über dieses Problem nachgedacht und ich kann mir nicht vorstellen, was der richtige Weg dafür ist. Ich möchte feststellen, ob Windows zu einem bestimmten Zeitpunkt Sound mit einem Powershell -Skript ausgibt. Ich kann feststellen, ob der Audiotreiber einen Fehler hat oder nicht, aber ich kann nicht für das Leben von mir herausfinden, ob das System Ton spielt.

Ich habe mir die .NET -Klasse für System.Media angeschaut und die drei Klassen im Inneren hatten alles mit dem Abspielen von Sound oder dem Manipulieren der Systemsounds zu tun.

Ich frage nicht, ob Code für mich geschrieben werden soll, ich muss nur wissen, wo ich anfangen soll, um zu überprüfen, ob das Windows-System gerade Ton spielt.

Ich habe einen Tonmonitor, der kontinuierlich den Ton auf der Node.js-Plattform überwacht und wenn er Ton verliert, sendet er mir einen Text. Nun, ich möchte auch, dass es durch alle Systeme geht, an die es angeschlossen ist, und um zu sehen, wo der Fehler liegt. Deshalb möchte ich sehen, ob der Windows-Computer Ton spielt oder nicht.

    
Adam McGurk 31.07.2017, 17:48
quelle

3 Antworten

6

So verwenden Sie den Code, den Simon Mourier zur Verfügung gestellt hat.

Führen Sie den folgenden Code aus:

%Vor%

Ich habe alle var -Typen ersetzt, da das Problem dadurch zu beheben scheint, dass der Code in PowerShell Version 2 nicht kompiliert wird.

Nach dem Laden können Sie den Status wie folgt überprüfen:

%Vor%

Ich habe das mit Windows 10 1703 auf der PowerShell 5.1 getestet.

Aber es gibt Vorbehalte:

%Vor%

Wenn Sie also return value > 1E-08 in return value > 0 ändern, werden Sie bei einem angehaltenen Video auf true gesetzt.

    
Persistent13 03.08.2017, 20:04
quelle
7

Hier ist ein Beispiel-C # -Code, der bestimmt, ob Windows einen Audio-Stream rendert. Es verwendet die Windows Core Audio-API (insbesondere die IAudioMeterInformation-Schnittstelle ) und wird unterstützt Vista und höher.

%Vor%

Wie in meinem Kommentar gesagt, habe ich auch ein Open-Source-C ++ - Projekt, eine einfache reibungsfreie Zero-Abhängigkeiten Konsolenanwendung, hier verfügbar: Ссылка . Ich habe eine x86-Release-Binärdatei hinzugefügt, die 32- und 64-Bit-Betriebssysteme unterstützen sollte: Ссылка

Sie können es in PowerShell wie jedes externe EXE-Programm verwenden. Es wird eine Fehlerstufe zurückgegeben, die Sie mit Standardmethoden abrufen können, zum Beispiel Ссылка

Hier ist der äquivalente C ++ Code:

%Vor%     
Simon Mourier 03.08.2017 12:11
quelle
3

Sie könnten das AudioDeviceCmdlets -Modul verwenden, das von Chris Hunt

Write-DefaultAudioDeviceValue -StreamValue sieht aus wie Sie suchen. Ansonsten kannst du dir seine Quelle ansehen, wie er diese Werte mit CoreAudioApi

zieht     
BenH 02.08.2017 21:57
quelle