2011-08-30 08:32:07 +0000 2011-08-30 08:32:07 +0000
104
104

Как предотвратить принудительную блокировку экрана в Windows 7?

Наша корпоративная КОФА накладывает настройку блокировки экрана с невероятно короткой задержкой. Это расстраивает и контрпродуктивно.

Есть ли способ предотвратить автоматическую блокировку экрана? Я бы предположить, что нет никакого способа, чтобы переопределить полицейские усиленные настройки, но, возможно, есть программное обеспечение, которое имитирует деятельность пользователя.

Просто спрашиваю, прежде чем я установлю вечное колесо мыши. (понял?)

Ответы (11)

92
92
92
2013-04-10 17:22:35 +0000

Если Windows Media Player все еще установлен, вы можете воспроизводить видео по циклу и минимизировать его (образец “Живая природа” видео прекрасно работает для этого). По умолчанию, пока воспроизводится видео, экран не блокируется.

89
89
89
2014-11-05 18:54:27 +0000

Я использую сценарий под названием idle.vbs:

Dim objResult

Set objShell = WScript.CreateObject("WScript.Shell")    

Do While True
  objResult = objShell.sendkeys("{NUMLOCK}{NUMLOCK}")
  Wscript.Sleep (6000)
Loop

Каждые шесть секунд, это быстро переключает нумерацию на клавиатуре, заставляя Windows поверить, что кто-то взаимодействует с клавиатурой, предотвращая блокировку экрана. Это работает на ванильных окнах, вам не нужны инструменты разработки или сценариев для его использования, просто сделайте текстовый файл с расширением .vbs и дважды щелкните по нему (или поместите его в стартовые элементы).

Правка: вы можете поместить этот сценарий в стартовые элементы с помощью

choco install IdleVbs -source https://www.myget.org/F/joshrivers-utility/

Для получения дополнительной информации об установщике CLI Choclatey (choco), пожалуйста, смотрите: https://chocolatey.org/ .

18
18
18
2015-06-24 17:31:31 +0000

Еще один вариант - бесплатная программа Caffeine . Она также бесплатна для коммерческого использования. С домашней страницы программы:

Если у вас возникли проблемы с блокировкой компьютера или вы собираетесь спать, кофеин не даст ему заснуть. Он работает, имитируя нажатие клавиш раз в 59 секунд, так что ваша машина думает, что вы все еще работаете на клавиатуре, так что не будет блокировать экран или активировать заставку.

Кофеин работает, имитируя нажатие клавиш F15 каждые 59 секунд. Из всех доступных нажатий клавиш, F15, вероятно, является наименее навязчивой (я никогда не видел клавиатуры ПК с этой клавишей!), и наименее вероятно, что она будет мешать вашей работе.

Это готовое решение также позволяет вам контролировать, когда включить и выключить его:

Двойной щелчок по иконке программы опустошает кофейник, что и представляет собой иконку, и временно отключает программу. Двойное нажатие на нее снова наполнит кофейник, и Ваша кофемашина будет бодрствовать.

7
7
7
2011-08-30 14:59:16 +0000

Вы можете создать сценарий AutoIt , чтобы либо постоянно нажимать неиспользуемую клавишу (например, заставить ее переключить блокировку цифр, прокрутить блокировку), поспать минутку или около того, и повторить. Или же, если вы часто используете клавиатуру, вы можете заставить ее двигать мышь на пиксель или около того в любом направлении.

Если вы не хотите, чтобы она постоянно запускалась, вы можете также запустить скрипт как запланированную задачу (если у вас есть доступ), чтобы запустить его после того, как компьютер был неактивным в течение некоторого времени.

И это очень простой сценарий для выполнения невидимого движения мыши, если вы не хотите попасть в синтаксис 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 Scheduler.

5
5
5
2014-06-06 21:36:21 +0000

Существует андроид приложение под названием “Timeout Blocker”, которое вибрирует с интервалом, и вы можете положить мышь на него. Он говорит не использовать его на работе, хотя. https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=en

5
5
5
2013-03-09 03:28:45 +0000

Скомпилируйте его в Visual Studio или C# Express и запустите из командной строки (или дважды щелкните по нему). Требуется .NET 4.0 или выше. Он делает все, что вам нужно.

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;

        }
    }
}
```.
2
2
2
2018-01-16 14:55:11 +0000

Мне нравится использовать easy и integrated опции ( нет дополнительного программного обеспечения ), как сценарий Powerhell (спасибо https://dmitrysotnikov.wordpress.com/2009/06/29/prevent-desktop-lock-or-screensaver-with-powershell/ ), который использует “f15” в качестве ключа к успеху (thx к кофеину. Это действительно меньше всего мешает)

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("{F15}")
}

Положите это в myScriptName.ps1 и запустите его через ярлык рабочего стола или с помощью командной строки:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop "C:\Users\myUser\Desktop\myScriptName.ps1"

UPDATE: Может быть, были какие-то изменения от администратора, но это больше не работает для меня Теперь я должен использовать автогорячий сценарий от NBirnel: https://github.com/nbirnel/nosleep - эта работа перфект, потому что она двигает мышь (не отвлекаясь ни на одну работу).

1
1
1
2014-12-30 08:17:36 +0000

В моем случае только одна линия сделала трюк:

SendKeys.Send("{CAPSLOCK}");

Просто поместите его в событие Timer_Tick и установите интервал таймера, например, 60000 мс.

1
1
1
2017-05-23 06:00:59 +0000

Mouse Jiggler может быть опцией https://mousejiggler.codeplex.com/ .

-1
-1
-1
2018-10-03 15:01:08 +0000

Правильный способ работы:

  • войти в реестр, где политика
  • установить значение
  • и изменить права доступа к ключу реестра
  • только Deny доступ на запись для всех, кроме вас.
-5
-5
-5
2013-11-15 03:17:15 +0000

Вы должны отключить “блокировку экрана”/“спящий режим” с панели управления > опции питания > изменить настройки плана. В появившемся окне нажмите на выпадающее меню “Поставить компьютер в спящий режим” и выберите “никогда”.

Похожие вопросы

3
19
10
28
8