우리 회사 BOFH는 엄청나게 짧은 지연으로 화면 잠금 설정을 적용합니다. 실망스럽고 비생산적입니다.
자동 화면 잠금을 방지하는 방법이 있습니까? 정책 적용 설정을 무시하는 방법은 없지만 사용자 활동을 모방하는 소프트웨어가있을 수 있습니다.
영구 마우스 휠을 설정하기 전에 묻습니다. (알 겠어요?)
답변
나는 idle.vbs라는 제목의 스크립트를 사용합니다.
Dim objResult
Set objShell = WScript.CreateObject("WScript.Shell")
Do While True
objResult = objShell.sendkeys("{NUMLOCK}{NUMLOCK}")
Wscript.Sleep (6000)
Loop
6 초마다 키보드에서 numlock을 빠르게 토글하여 Windows가 누군가가 키보드와 상호 작용하여 화면 잠금을 방지한다고 믿습니다. 이것은 바닐라 창에서 실행되며이를 사용하기 위해 개발 또는 스크립팅 도구가 필요하지 않습니다. 확장자가 .vbs 인 텍스트 파일을 만든 다음 두 번 클릭하거나 시작 항목에 배치하십시오.
편집 :이 스크립트를 시작 항목에 넣을 수 있습니다.
choco install IdleVbs -source https://www.myget.org/F/joshrivers-utility/
Choclatey ( choco) CLI 설치 프로그램 에 대한 자세한 내용은 다음을 참조하십시오.
답변
Windows Media Player가 여전히 설치되어 있으면 비디오를 루프에서 재생하고 최소화 할 수 있습니다 (샘플 “Wildlife”비디오가 제대로 작동 함). 기본적으로 비디오가 재생되는 동안 화면은 잠기지 않습니다.
답변
또 다른 옵션은 프리웨어 카페인 프로그램입니다. 상업용으로도 무료입니다. 프로그램 홈페이지에서 :
PC 잠금 또는 잠자기에 문제가있는 경우 카페인은 계속 깨어 있습니다. 59 초마다 한 번씩 키 누름을 시뮬레이션하여 작동하므로 컴퓨터는 여전히 키보드에서 작업하고 있다고 생각하므로 화면을 잠 그거나 화면 보호기를 활성화하지 않습니다.
카페인은 59 초마다 F15 키업 이벤트를 시뮬레이션하여 작동합니다. 사용 가능한 모든 키 누름 중 F15는 아마도 가장 방해가되지 않으며 (그 키로 PC 키보드를 본 적이 없습니다!) 작업에 방해가되지 않습니다.
이 기성품 솔루션을 사용하면 언제 활성화하고 비활성화할지 제어 할 수 있습니다.
프로그램 아이콘을 두 번 클릭하면 아이콘이 나타내는 커피 포트가 비워지고 프로그램이 일시적으로 비활성화됩니다. 다시 더블 클릭하면 포트가 채워지고 기계가 깨어납니다.
답변
AutoIt 스크립트를 생성하여 사용하지 않는 키를 계속 누르고 (예 : num lock 전환, 스크롤 잠금) 1 분간 잠자기 및 반복 할 수 있습니다. 또는 키보드를 많이 사용하는 경우 마우스를 아무 방향으로나 픽셀만큼 움직일 수 있습니다.
계속 실행하지 않으려면 일정 시간 동안 컴퓨터를 사용하지 않으면 스크립트를 예약 된 작업 (액세스 권한이있는 경우)으로 시작하면됩니다.
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 스케줄러에서 시작할 수도 있습니다.
답변
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;
}
}
}
답변
“Timeout Blocker”라는 안드로이드 앱이 간격을두고 진동하며 마우스를 올려 놓을 수 있습니다. 그것은 직장에서 사용하지 말라고합니다. https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=ko
답변
내가 사용하려면 간단 하고 통합 된 옵션 ( 추가 소프트웨어 PowerShell 스크립트 등) (감사 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"
업데이트 :
어쩌면 관리자의 변경이 있었지만 더 이상 작동하지 않습니다. 이제 NBirnel에서 autohotkey-script를 사용해야합니다 : https://github.com/nbirnel/nosleep- 이 작업은 완벽 하기 때문에 완벽 합니다. 작업을 방해하지 않고 마우스를 움직입니다.