Mein Windows 7-System ist so eingestellt, dass der Bildschirm nach 20 Minuten Inaktivität gesperrt wird (dies ist eine vom Arbeitsplatz erzwungene Richtlinie; ich kann diese Einstellung nicht ändern).
Wenn ich die Tastatur / Maus verwende, behandelt Windows sie als Benutzereingaben, und der Bildschirm bleibt somit entsperrt. Wenn ich jedoch ein Spiel nur mit einem Joystick spiele, behandelt Windows dies als keine Aktivität, und daher wird der Bildschirm nach dem Timeout gesperrt.
Gibt es eine Möglichkeit, die Bildschirmsperre bei der Verwendung von Joystick-basierten Spielen zu verhindern?
Um dieses Problem zu umgehen, spiele ich derzeit ein zufälliges Video (stummgeschaltet) im Hintergrund mit VLC ab, wodurch die Bildschirmsperre verhindert wird. Aber es sollte einen besseren Weg geben, um dieses Problem zu lösen ...
Ich könnte möglicherweise ein Skript schreiben, das einige Tastenanschläge wie {NUMLOCK}{NUMLOCK}
via simuliert sendkeys
. Es besteht jedoch immer die Möglichkeit eines unbeabsichtigten Nebeneffekts, z. B. die Verhinderung, dass ich diese Schlüssel in meinen Spieloptionen verwende.
quelle
Antworten:
Immer wenn Sie eine Taste auf der Tastatur drücken oder die Maus bewegen / klicken, setzt Windows den Leerlauf-Timer zurück . Sie können eine Windows-API-Funktion aufrufen, die den Leerlauf-Timer genauso zurücksetzt. Wenn Sie die Funktion in regelmäßigen Abständen aufrufen, wird der Bildschirmschoner niemals aktiviert und der Computer wird niemals gesperrt. Dies ist, was VLC und andere Anwendungen tun.
Der Funktionsname ist
SetThreadExecutionState
und befindet sich inkernel32.dll
. In VB sieht der eigentliche Anruf folgendermaßen aus:SetThreadExecutionState(ES_SYSTEM_REQUIRED Or ES_DISPLAY_REQUIRED)
Die zwei Konstanten sind:
ES_SYSTEM_REQUIRED = &H1
undES_DISPLAY_REQUIRED = &H2
Sie können diese Aufrufe nicht über VBScript ausführen, daher benötigen Sie etwas Fortgeschritteneres, um dies zu codieren.
Im Übrigen ist das oben Genannte der technisch korrekte Weg, dies zu tun. Viele Dienstprogramme, die ich im Internet gesehen habe, verwenden alberne Tricks wie das Simulieren von Tastenanschlägen oder das Wackeln der Maus. Das ist meiner Meinung nach schlecht, da es Ihre Arbeit beeinträchtigen kann.
Wie auch immer, ich habe zu viel abgeschweift. Diese Art von Sachen gehört zu Stack Overflow.
quelle
Sie können die
SetThreadExecutionState
vom Python-Modul ctypes bereitgestellte Funktion als Teil einer eigenständigen Python-Anwendung verwenden, die Sie im Hintergrund ausführen und mit Strg + C beenden können. (Dank der Antwort von @ misha256 für die Erklärung der Verwendung dieser Funktion!)Ich habe dieses Skript für Windows erstellt. Besuchen Sie die GitHub-Release-Seite hier .
quelle
0
als Platzhalter ist der Standardwegpass
.Führen Sie einfach eine Datei mit dem Namen :
no_sleep.vbs
. Diese Textdateino_sleep.vbs
sollte den folgenden Text enthalten.Bitte googeln Sie, wenn Sie nicht wissen, wie Sie eine leere Textdatei erstellen und deren Erweiterung umbenennen können.
Die Taste F13 sollte die Spieloptionen nicht beeinträchtigen
quelle