If Windows Media Player is still installed, you can play a video on loop and minimize it (the sample "Wildlife" videos work fine for this). By default, as long as a video is playing, the screen won't lock.
Как я могу предотвратить принудительную блокировку экрана в Windows 7?
Наш корпоративный BOFH устанавливает блокировку экрана с смехотворно короткой задержкой. Это расстраивает и контрпродуктивно.
Есть ли способ предотвратить автоматическую блокировку экрана? Я бы предположил, что нет способа переопределить параметр, основанный на политике, но, возможно, есть программное обеспечение, которое имитирует активность пользователя.
Просто спрашиваю, прежде чем я установил вечное колесо мыши. (возьми?)
11 ответов на вопрос
- Популярные
- Новые
- С комментариями
- Активные
I use a script I title idle.vbs:
Dim objResult Set objShell = WScript.CreateObject("WScript.Shell") Do While True objResult = objShell.sendkeys("") Wscript.Sleep (6000) Loop
Every six seconds, this quickly toggles numlock on the keyboard, causing Windows to believe that someone is interacting with the keyboard, preventing screen lock. This runs on vanilla windows, you don't need development or scripting tools to use it, just make a text file with .vbs as the extension and double-click it (or place it in your startup items).
Edit: you can put this script in your startup items with
choco install IdleVbs -source https://www.myget.org/F/joshrivers-utility/
For more information on the Choclatey (choco
) CLI installer please see:
Yet another option is freeware Caffeine program. It is free for commercial use as well. From the program's homepage:
If you have problems with your PC locking or going to sleep, caffeine will keep it awake. It works by simulating a key-press once every 59 seconds, so your machine thinks you're still working at the keyboard, so won't lock the screen or activate the screensaver.
Caffeine works by simulating an F15 key up event every 59 seconds. Of all the key presses available, F15 is probably the least intrusive (I've never seen a PC keyboard with that key!), and least likely to interfere with your work.
This off-the-shelf solution also allows you to control when to enable it and disable it:
Double-clicking the program icon empties the coffee pot, which is what the icon represents, and temporarily disables the program. Double-clicking it again refills the pot, and will keep your machine awake.
Вы можете создать скрипт AutoIt, чтобы либо непрерывно нажимать неиспользуемую клавишу (например, сделать так, чтобы она переключала num lock, scroll lock), спать в течение минуты или около того и повторять. В качестве альтернативы, если вы часто используете клавиатуру, вы можете заставить ее перемещать мышь на пиксель или около того в любом направлении.
Если вы не хотите, чтобы он работал постоянно, вы можете также запустить сценарий как запланированную задачу (если у вас есть доступ), чтобы запустить ее после того, как компьютер неактивен в течение некоторого времени.
И это очень простой скрипт для выполнения невидимого движения мышью, если вы не хотите использовать синтаксис AutoIt:
While True Local $pos = MouseGetPos() MouseMove($pos[0]-1, $pos[1]-1, 0) MouseMove($pos[0], $pos[1], 0) Sleep(540000) WEnd
Этот скрипт перемещает курсор мыши на один пиксель в направлении вверх-влево, а затем возвращает его обратно, затем спит в течение 9 минут ( 540000
миллисекунд). Когда скрипт запущен, вы можете увидеть значок AutoIt в трее. Вы можете остановить его, щелкнув правой кнопкой мыши на этом значке и выбрав соответствующую опцию.
Чтобы создать сценарий, установите AutoIt, щелкните правой кнопкой мыши в любой папке и выберите New
> AutoIt v3 Script
, назовите его, щелкните правой кнопкой мыши этот новый сценарий, выберите Edit
, вставьте приведенный выше код и сохраните. Вы даже можете скомпилировать его .exe
(опять же, из контекстного меню), чтобы запустить, например, из планировщика Windows.
Compile this in Visual Studio or C# Express and run it from a command prompt (or double click it). Requires .NET 4.0 or above. It does everything you are looking for.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Threading; using System.Runtime.InteropServices; using System.Windows.Forms; namespace ImWorkin { class Program { [FlagsAttribute] public enum EXECUTION_STATE : uint { ES_SYSTEM_REQUIRED = 0x00000001, ES_DISPLAY_REQUIRED = 0x00000002, ES_CONTINUOUS = 0x80000000 } public SYSTEMTIMEOUTS TimeOuts { get { return sysTimeouts; } } public struct SYSTEMTIMEOUTS { public int BATTERYIDLETIMEOUT; public int EXTERNALIDLETIMEOUT; public int WAKEUPIDLETIMEOUT; } [DllImport("USER32.DLL", CharSet = CharSet.Unicode)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("USER32.DLL")] public static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE flags); [DllImport("user32.dll", SetLastError = true, EntryPoint ="SystemParametersInfo")] internal static extern int SystemParametersInfo(int uiAction, int uiParam, ref int pvParam, int fWinIni); private static System.Threading.Timer preventSleepTimer = null; public const int SPI_GETBATTERYIDLETIMEOUT = 252; public const int SPI_GETEXTERNALIDLETIMEOUT = 254; public const int SPI_GETWAKEUPIDLETIMEOUT = 256; public static int Counter = 0; public static int timeOutinMS = 0; public static int batteryIdleTimer; public static int externalIdleTimer; public static int wakeupIdleTimer; public static SYSTEMTIMEOUTS sysTimeouts; static void Main(string[] args) { Console.WriteLine("You are about to be workin!! Just a moment...I need to calculate a few values."); string dots = string.Empty; for (int i =2; i < 60; i++) { dots = ""; for (int ii = 0; ii < i; ii++) { dots = dots + "."; } Thread.Sleep(100); Console.Clear(); Console.WriteLine("You are about to be workin!! Just a moment...I need to calculate a few values."); Console.WriteLine(dots); } GetSystemTimeOuts(); if (timeOutinMS < sysTimeouts.BATTERYIDLETIMEOUT) timeOutinMS = sysTimeouts.BATTERYIDLETIMEOUT; if (timeOutinMS < sysTimeouts.EXTERNALIDLETIMEOUT) timeOutinMS = sysTimeouts.EXTERNALIDLETIMEOUT; if (timeOutinMS < sysTimeouts.WAKEUPIDLETIMEOUT) timeOutinMS = sysTimeouts.WAKEUPIDLETIMEOUT; if (timeOutinMS == 0) timeOutinMS = 30; DisableDeviceSleep(); Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine("OK. I have calculated your computers timeout periods and set the "); Console.WriteLine("necessary hooks. Your computer will not shut off the monitor, will"); Console.WriteLine("show active in any chat programs,the screensaver is disabled and "); Console.WriteLine("the computer will not lock! Anyone looking at you eaither locally "); Console.WriteLine("or remotely will think you are hard at work."); Console.WriteLine(""); Console.WriteLine("Now go do something fun...I got your back ;)"); Console.WriteLine("Oh yeah....if you close this window OR press `q' in this "); Console.WriteLine("window you are going to have to actually work."); Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine("This text will disappear in a 30 seconds. Just in case someone comes "); Console.WriteLine("by and reads your screen!"); Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine("Need custom coding? Kenneth.gore@gmail.com"); while (Console.KeyAvailable == false) { Thread.Sleep(250); ConsoleKeyInfo cki = Console.ReadKey(true); if (cki.KeyChar == 'q') break; } } public static void DisableDeviceSleep() { SetThreadExecutionState(EXECUTION_STATE.ES_SYSTEM_REQUIRED | EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_CONTINUOUS); preventSleepTimer = new System.Threading.Timer(new TimerCallback(PokeDeviceToKeepAwake), null, 0, timeOutinMS * 1000); } public static void EnableDeviceSleep() { preventSleepTimer.Dispose(); preventSleepTimer = null; } private static void PokeDeviceToKeepAwake(object extra) { Counter++; try { SetThreadExecutionState(EXECUTION_STATE.ES_SYSTEM_REQUIRED | EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_CONTINUOUS); IntPtr Handle = FindWindow("SysListView32", "FolderView"); if (Handle == IntPtr.Zero) { SetForegroundWindow(Handle); SendKeys.SendWait("%1"); } if (Counter > 1) Console.Clear(); } catch { } } public static void GetSystemTimeOuts() { sysTimeouts.BATTERYIDLETIMEOUT = -2; sysTimeouts.EXTERNALIDLETIMEOUT = -2; sysTimeouts.WAKEUPIDLETIMEOUT = -2; if (SystemParametersInfo(SPI_GETBATTERYIDLETIMEOUT, 0, ref batteryIdleTimer, 0) == 1) sysTimeouts.BATTERYIDLETIMEOUT = batteryIdleTimer; else sysTimeouts.BATTERYIDLETIMEOUT = -1; if (SystemParametersInfo(SPI_GETEXTERNALIDLETIMEOUT, 0, ref externalIdleTimer, 0) == 1) sysTimeouts.EXTERNALIDLETIMEOUT = externalIdleTimer; else sysTimeouts.EXTERNALIDLETIMEOUT = -1; if (SystemParametersInfo(SPI_GETWAKEUPIDLETIMEOUT, 0, ref wakeupIdleTimer, 0) == 1) sysTimeouts.WAKEUPIDLETIMEOUT = wakeupIdleTimer; else sysTimeouts.WAKEUPIDLETIMEOUT = -1; } } }
Существует приложение для Android под названием «Timeout Blocker», которое вибрирует с интервалом, и вы можете навести на него мышку. Это говорит не использовать это на работе все же. https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=en
In my case just this one line did the trick:
SendKeys.Send("");
Just put it in the Timer_Tick
event and set timer interval to e.g. 60000ms.
Мышь Jiggler может быть вариант: https://mousejiggler.codeplex.com/
Мне нравится использовать простые и интегрированные опции ( без дополнительного программного обеспечения ), например скрипт powershell (спасибо https://dmitrysotnikov.wordpress.com/2009/06/29/prevent-desktop-lock-or-screensaver-with-powershell/ ) который использует «f15» как ключ к успеху (спасибо кофеину. Это действительно меньше всего мешает)
param($minutes = 180) write "... screen will be awake for $minutes" $myshell = New-Object -com "Wscript.Shell" for ($i = 0; $i -lt $minutes; $i++) { write "... screen will be awake for" ($minutes-$i) Start-Sleep -Seconds 60 $myshell.sendkeys("") }
Поместите это в myScriptName.ps1 и запустите его с помощью ярлыка на рабочем столе или командной строки: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop "C:\Users\myUser\Desktop\myScriptName.ps1"
ОБНОВЛЕНИЕ: Возможно, были некоторые изменения от администратора, но это больше не работает для меня. Теперь я должен использовать скрипт autohotkey из NBirnel: https://github.com/nbirnel/nosleep - это отлично работает, потому что это двигает мышь (не отвлекаясь на какую-либо работу)
Правильный способ справиться с этим:
- зайдите в реестр, где политика
- установите значение на то, что вы хотите
- и измените права доступа к ключу реестра
- только запретить запись кому-либо, кроме вас
Похожие вопросы
-
12
Почему папка / winsxs становится такой большой и ее можно уменьшить?
-
2
Повышенные привилегии для запуска приложений в Windows?
-
14
PDF Viewer в Windows
-
-
7
Какие службы Windows можно безопасно отключить?
-
8
Firefox PDF плагин для просмотра PDF в браузере на Windows
-
1
Windows теряет макет экрана
-
1
Есть ли способ предотвратить установку / обновление, чтобы засорять мой жесткий диск загадочными пап...
-
1
Как я могу получить доступ к принтеру Windows Vista из Ubuntu по сети?
-
6
Просмотр журнала в Windows
-
3
Фоновая проблема Windows с двумя экранами