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

¿Cómo puedo evitar un bloqueo de pantalla reforzado por políticas en Windows 7?

Nuestro BOFH corporativo impone el ajuste de bloqueo de pantalla con un retraso ridículamente corto. Es frustrante y contraproducente.

¿Hay alguna manera de prevenir el bloqueo automático de pantalla? Asumiría que no hay forma de anular la configuración de la política, pero tal vez hay un software que imita la actividad del usuario.

Sólo preguntaba antes de configurar una rueda de ratón perpetua. (¿entiendes?)

Respuestas (11)

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

Si el Reproductor de Windows Media sigue instalado, puedes reproducir un vídeo en bucle y minimizarlo (los vídeos de muestra de “Vida Silvestre” funcionan bien para esto). De forma predeterminada, mientras se esté reproduciendo un vídeo, la pantalla no se bloqueará.

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

Utilizo un script que titulo idle.vbs:

Dim objResult

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

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

Cada seis segundos, esto cambia rápidamente el bloqueo numérico del teclado, haciendo que Windows crea que alguien está interactuando con el teclado, evitando el bloqueo de la pantalla. Esto funciona en ventanas de vainilla, no necesitas herramientas de desarrollo o scripts para usarlo, sólo haz un archivo de texto con .vbs como extensión y haz doble clic en él (o colócalo en tus elementos de inicio).

Editar: puedes poner este script en tus elementos de inicio con

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

Para más información sobre el instalador del CLI de Choclatey (choco) por favor mira: https://chocolatey.org/

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

Otra opción es el programa Freeware Cafeína. Es gratis para uso comercial también. Desde la página principal del programa:

Si tiene problemas con el bloqueo de su PC o con el sueño, la cafeína lo mantendrá despierto. Funciona simulando la pulsación de una tecla cada 59 segundos, de modo que tu máquina piensa que sigues trabajando en el teclado, por lo que no bloqueará la pantalla ni activará el salvapantallas.

La cafeína funciona simulando una pulsación de tecla F15 cada 59 segundos. De todas las pulsaciones de teclas disponibles, F15 es probablemente la menos intrusiva (¡nunca he visto un teclado de PC con esa tecla!), y la que menos probabilidades tiene de interferir en tu trabajo.

Esta solución estándar también te permite controlar cuándo activarla y desactivarla:

Al hacer doble clic en el icono del programa se vacía la cafetera, que es lo que representa el icono, y se desactiva temporalmente el programa. Haciendo doble clic de nuevo se vuelve a llenar la cafetera, y mantendrá la máquina despierta.

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

Puedes crear un guión AutoIt para pulsar continuamente una tecla no utilizada (por ejemplo, hacer que conmute el bloqueo numérico, el bloqueo de desplazamiento), dormir durante un minuto más o menos, y repetir. Alternativamente, si utiliza mucho el teclado, puede hacer que mueva el ratón un píxel más o menos en cualquier dirección.

Si no quiere que se ejecute continuamente, también puede lanzar el guión como una tarea programada (si tiene acceso) para que se ejecute después de que el ordenador haya estado inactivo durante algún tiempo.

Y este es un guión muy simple para realizar un movimiento invisible del ratón, si no quieres entrar en la sintaxis de AutoIt:

While True
   Local $pos = MouseGetPos()
   MouseMove($pos[0]-1, $pos[1]-1, 0)
   MouseMove($pos[0], $pos[1], 0)
   Sleep(540000)
WEnd

Este guión mueve el cursor del ratón un píxel en la dirección de arriba a la izquierda y después lo devuelve, y luego duerme durante 9 minutos (540000 milisegundos). Cuando el guión se está ejecutando, puedes ver el icono de AutoIt en la bandeja. Puedes detenerlo haciendo clic derecho en este icono y eligiendo la opción correspondiente.

Para hacer un script, instala AutoIt, haz clic derecho en cualquier carpeta y elige New > AutoIt v3 Script, dale un nombre, haz clic derecho en este nuevo script, elige Edit, pega el código proporcionado arriba y guarda. Incluso puedes compilarlo en .exe (de nuevo, desde el menú contextual) para iniciar, por ejemplo, desde el Programador de Windows.

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

Hay una aplicación para androides llamada “Bloqueador de Tiempo” que vibra en un intervalo y puedes poner tu ratón sobre ella. Sin embargo, dice que no lo uses en el trabajo. https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=en

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

Compila esto en Visual Studio o C# Express y ejecútalo desde un símbolo del sistema (o haz doble clic en él). Requiere .NET 4.0 o superior. Hace todo lo que buscas.

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

Me gusta usar las opciones fácil y integrado ( sin software adicional ), como un script de powershell (gracias https://dmitrysotnikov.wordpress.com/2009/06/29/prevent-desktop-lock-or-screensaver-with-powershell/ ) que usa el “f15” como la clave del éxito (thx a la cafeína. De hecho es el que menos interfiere)

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}")
}

Ponga esto en un myScriptName.ps1 e inícielo a través de un atajo de escritorio o línea de comandos:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop "C:\Users\myUser\Desktop\myScriptName.ps1"

Actualización: Tal vez hubo algún cambio por parte del administrador, pero esto ya no funciona para mí Ahora tengo que usar un autohotkey-script de NBirnel: https://github.com/nbirnel/nosleep - este trabajo perfecto , porque mueve el ratón (sin distraer el trabajo)

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

En mi caso sólo esta línea hizo el truco:

SendKeys.Send("{CAPSLOCK}");

Sólo ponlo en el evento Timer_Tick y establece el intervalo de tiempo a, por ejemplo, 60000ms.

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

Mouse Jiggler podría ser una opción https://mousejiggler.codeplex.com/

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

La forma correcta de manejarlo es:

  • entrar en el registro donde está la política
  • fijar el valor a lo que quieras
  • y alterar los permisos de la clave de registro
  • sólo Denegar el acceso de escritura a cualquiera excepto a ti mismo
-5
-5
-5
2013-11-15 03:17:15 +0000

Debes desactivar el “bloqueo de pantalla”/“modo de espera” desde el panel de control \ ~ - opciones de energía \ ~ - cambiar la configuración del plan. Ella en el menú desplegable de “Poner el ordenador a dormir” y seleccione “nunca”.