Schlaf HTPC, wenn der Monitor ausgeschaltet ist

318
Silicabello

Ich möchte, dass mein PC automatisch ausgeschaltet wird, wenn ich den Fernseher ausschalte. Wie kann das erreicht werden? Ich möchte auch, dass der HTPC eingeschaltet wird, wenn der Fernseher so gut wie möglich eingeschaltet ist

Computer- Windows 8.1 Gigabyte B85 GTX 650

0
Mit "tv" meinen Sie den Monitor? Xavierjazz vor 8 Jahren 0
Es ist ein htpc, also ist es an einen Fernseher angeschlossen Silicabello vor 8 Jahren 0

2 Antworten auf die Frage

0
Keltari

Dies sollte eigentlich mit Scripting oder Codierung möglich sein.

Es gibt eine WMI Win32_DesktopMonitor-Klasse mit einer Eigenschaft namens "Verfügbarkeit".

Die Verfügbarkeitseigenschaft listet 17 mögliche Zustände auf, in denen sich der Monitor befinden kann. Möglicherweise möchten Sie den Wert 0x03 (Running oder Full Power) überprüfen. Sie müssen jedoch mit den Rückgabewerten Ihres Fernsehgeräts spielen, um zu sehen, was am besten ist.

Ein Skript oder ein Programm kann so geschrieben werden, dass es in einer von Ihnen gewählten Frequenz ausgeführt wird, den Status des Fernsehgeräts erkennt und dann einen Schlafbefehl an das Betriebssystem sendet, wenn er erkennt, dass das Fernsehgerät ausgeschaltet ist.

Ich bin in erster Linie ein Benutzer von osx / linux. Können Sie das Notwendige für das Skript in Windows ausarbeiten? Silicabello vor 8 Jahren 0
vbscript oder powershell - scripting in windows integriert. Wenn Sie ein echtes Programm schreiben möchten, können Sie Visual Studio Express kostenlos herunterladen Keltari vor 8 Jahren 0
0
Richard

Die folgenden VBScript-Schleifen erweitern den Kommentar von Keltari, und jede Sekunde meldet, ob der Bildschirm aktiviert ist oder nicht.

Do WScript.Sleep 1000 WScript.Echo "Screen is on = " & ScreenOn Loop  Function ScreenOn()  Dim objWMIService, colItems, objItem  On Error Resume Next  Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_DesktopMonitor",,48) ScreenOn = False  For Each objItem in colItems If objItem.Availability = 3 Then ScreenOn = True Exit For End If Next  On Error Goto 0  End Function 

Sie sollten es speichern (z. B. als screenstatus.vbs) und mit cscript screenstatus.vbs) von der Befehlszeile aus ausführen .

Wenn alles gut geht, wird jede Sekunde "True" angezeigt, und wenn Sie den Bildschirm ausschalten, wird er auf "False" gesetzt. Sie müssen natürlich den Bildschirm einschalten, um dies zu überprüfen!

Angenommen, das geht gut, dann können Sie die Schleife oben in etwas ändern:

If ScreenOn() = False Then ' Call command here to sleep computer End If 

und planen Sie dann, das Skript regelmäßig auszuführen (z. B. alle 15 Minuten).

Ihr Computer wird nicht sofort in den Ruhezustand versetzt, sondern wird bei der nächsten Ausführung des Skripts deaktiviert (was in dem von mir angegebenen Beispiel innerhalb von 15 Minuten liegt).