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

Come posso evitare un blocco dello schermo imposto dalla politica in Windows 7?

Il nostro BOFH aziendale impone l'impostazione del blocco dello schermo con un ritardo ridicolmente breve. È frustrante e controproducente.

Esiste un modo per impedire il blocco automatico dello schermo? Suppongo che non ci sia modo di annullare le impostazioni imposte dalla politica, ma forse c'è un software che imita l'attività degli utenti.

Basta chiedere prima di impostare una rotellina del mouse perpetua. (capito?)

Risposte (11)

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

Se Windows Media Player è ancora installato, è possibile riprodurre un video in loop e ridurlo al minimo (i video di esempio “Wildlife” funzionano bene per questo). Per impostazione predefinita, finché un video è in riproduzione, lo schermo non si blocca.

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

Uso uno script I title idle.vbs:

Dim objResult

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

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

Ogni sei secondi, questo attiva rapidamente il numlock sulla tastiera, facendo credere a Windows che qualcuno stia interagendo con la tastiera, impedendo il blocco dello schermo. Questo funziona su vanilla windows, non avete bisogno di strumenti di sviluppo o di scripting per usarlo, basta fare un file di testo con estensione .vbs e fare doppio clic su di esso (o metterlo nelle vostre voci di avvio).

Edit: potete mettere questo script nelle vostre voci di avvio con

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

Per maggiori informazioni sul programma di installazione di Choclatey (choco) CLI si veda: https://chocolatey.org/

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

Un'altra opzione è il programma freeware Caffeine . E ‘gratuito anche per uso commerciale. Dalla homepage del programma:

Se avete problemi di blocco del PC o di sonno, la caffeina lo terrà sveglio. Funziona simulando una pressione del tasto una volta ogni 59 secondi, così la vostra macchina pensa che stiate ancora lavorando alla tastiera, quindi non bloccherà lo schermo o attiverà lo screensaver.

Caffeina funziona simulando un evento F15 key up ogni 59 secondi. Di tutte le pressioni di tasto disponibili, F15 è probabilmente la meno invadente (non ho mai visto una tastiera per PC con quel tasto!), e meno probabile che interferisca con il vostro lavoro.

Questa soluzione pronta all'uso vi permette anche di controllare quando abilitarla e disabilitarla:

Facendo doppio clic sull'icona del programma si svuota la caffettiera, che è ciò che l'icona rappresenta, e si disabilita temporaneamente il programma. Facendo doppio clic su di essa si ricarica la caffettiera e si tiene sveglia la macchina.

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

È possibile creare uno script AutoIt per premere continuamente un tasto non utilizzato (ad esempio, per fargli attivare il blocco del numero, il blocco dello scorrimento), dormire per un minuto o giù di lì e ripetere l'operazione. In alternativa, se si usa molto la tastiera, si può far muovere il mouse di un pixel o giù di lì in qualsiasi direzione.

Se non si vuole che sia continuamente in esecuzione, si può anche lanciare lo script come attività pianificata (se si ha accesso) da lanciare dopo che il computer è stato inattivo per un certo tempo.

E questo è uno script molto semplice per eseguire un movimento invisibile del mouse, se non si vuole entrare nella sintassi AutoIt:

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

Questo script sposta il cursore del mouse di un pixel nella direzione su-sinistra e dopo di che lo riporta indietro, poi dorme per 9 minuti (540000 millisecondi). Quando lo script è in esecuzione, si può vedere l'icona AutoIt nella tray. Si può fermare cliccando con il tasto destro del mouse su questa icona e scegliendo l'opzione corrispondente.

Per creare uno script, installare AutoIt, cliccare con il tasto destro del mouse in qualsiasi cartella e scegliere New > AutoIt v3 Script, nominarlo, cliccare con il tasto destro del mouse su questo nuovo script, scegliere Edit, incollare il codice fornito sopra e salvare. Potete anche compilarlo in .exe (di nuovo, dal menu contestuale) per avviare, ad esempio, da Windows Scheduler.

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

C'è un'applicazione per androidi chiamata “Timeout Blocker” che vibra a intervalli e su di essa si può mettere il mouse. Dice però di non usarlo al lavoro. https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=en

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

Compilarlo in Visual Studio o C# Express ed eseguirlo da un prompt di comandi (o fare doppio clic su di esso). Richiede .NET 4.0 o superiore. Fa tutto quello che state cercando.

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

Mi piace usare le opzioni facile e integrato ( nessun software aggiuntivo ), come uno script powerhell (grazie https://dmitrysotnikov.wordpress.com/2009/06/29/prevent-desktop-lock-or-screensaver-with-powershell/ ) che usa la “f15” come chiave del successo (thx alla caffeina. È davvero il meno interferente)

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

Mettilo in un myScriptName.ps1 e avvialo tramite il collegamento sul desktop o la linea di comando:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop "C:\Users\myUser\Desktop\myScriptName.ps1"

UPDATE: Forse c'è stato qualche cambiamento da parte dell'amministratore, ma questo non funziona più per me Ora devo usare uno script autohotkey-script di NBirnel: https://github.com/nbirnel/nosleep - questo lavoro perfetto , perché muove il mouse (senza distrarre alcun lavoro)

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

Nel mio caso solo questa linea ha fatto il trucco:

SendKeys.Send("{CAPSLOCK}");

Basta metterla nell'evento Timer_Tick e impostare l'intervallo del timer ad esempio a 60000ms.

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

Mouse Jiggler potrebbe essere un'opzione https://mousejiggler.codeplex.com/

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

Il modo corretto per gestirlo è quello di:

  • andare nel registro dove la politica è
  • impostare il valore a quello desiderato
  • e modificare i permessi delle chiavi del registro
  • solo Deny scrivere l'accesso a chiunque tranne che a te stesso
-5
-5
-5
2013-11-15 03:17:15 +0000

Si dovrebbe disattivare il “blocco schermo”/“modalità sleep” dal pannello di controllo > opzioni di alimentazione > modificare le impostazioni del piano. Lei in clicca il menu a tendina per “Mettere il computer a riposo” e selezionare “mai”.