当社のBOFHは、途方もなく短い遅延で画面ロック設定を課しています。イライラして逆効果です。
自動画面ロックを防ぐ方法はありますか?ポリシーが適用された設定をオーバーライドする方法はないと思いますが、ユーザーアクティビティを模倣するソフトウェアがあるかもしれません。
永久マウスホイールをセットアップする前に尋ねます。(それを得る?)
当社の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インストーラーの詳細については、以下を参照してください。
shell:startup
です。詳細については、このサイトを参照してくださいthewindowsclub.com/startup-folder-in-windows-8
Windows Media Playerがまだインストールされている場合は、ループでビデオを再生して最小化できます(このためにサンプルの「Wildlife」ビデオが正常に機能します)。デフォルトでは、ビデオが再生されている限り、画面はロックされません。
さらに別のオプションは、フリーウェアのカフェインプログラムです。商用利用も無料です。プログラムのホームページから:
PCのロックまたはスリープ状態に問題がある場合、カフェインはスリープ状態を維持します。59秒ごとに1回キーを押すことをシミュレートすることで機能するため、マシンはまだキーボードで作業していると判断するため、画面をロックしたり、スクリーンセーバーをアクティブにしたりしません。
カフェインは、59秒ごとにF15キーアップイベントをシミュレートすることで機能します。使用可能なすべてのキープレスの中で、F15はおそらく最も邪魔にならず(そのキーを備えたPCキーボードを見たことがない!)、作業に干渉する可能性は最も低くなります。
この既製のソリューションでは、いつ有効化および無効化するかを制御することもできます。
プログラムアイコンをダブルクリックすると、アイコンが表すコーヒーポットが空になり、プログラムが一時的に無効になります。もう一度ダブルクリックすると、ポットが補充され、マシンが起動し続けます。
AutoItスクリプトを作成して、未使用のキーを継続的に押す(たとえば、numロック、スクロールロックを切り替える)、1分程度スリープして、繰り返すことができます。あるいは、キーボードを頻繁に使用する場合は、マウスをピクセル単位で任意の方向に移動させることができます。
継続的に実行したくない場合は、スクリプトをスケジュールされたタスクとして起動し(アクセス権がある場合)、コンピューターがしばらく非アクティブになった後に起動することもできます。
AutoIt構文にしたくない場合、これは目に見えないマウスの移動を実行する非常に簡単なスクリプトです。
While True
Local $pos = MouseGetPos()
MouseMove($pos[0]-1, $pos[1]-1, 0)
MouseMove($pos[0], $pos[1], 0)
Sleep(540000)
WEnd
このスクリプトは、マウスカーソルを左上方向に1ピクセル移動し、その後カーソルを戻し、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;
}
}
}
一定間隔で振動する「タイムアウトブロッカー」というAndroidアプリがあり、マウスを置くことができます。ただし、職場では使用しないようにします。https://play.google.com/store/apps/details?id=com.isomerprogramming.application.timeoutblocker&hl=en
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-この作業は完璧です。マウスを動かします(作業の注意をそらすことなく)
c:\Powershell>powershell -nop myScriptName.ps1 myScriptName.ps1 : The term 'myScriptName.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1 + myScriptName.ps1 + ~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (myScriptName.ps1:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException c:\Powershell>
私の場合、この1行だけでうまくいきました。
SendKeys.Send("{CAPSLOCK}");
Timer_Tick
イベントに入れて、タイマー間隔を60000msなどに設定するだけです。
それを処理する正しい方法は次のとおりです。
コントロールパネル>電源オプション>プラン設定の変更から「画面ロック」/「スリープモード」を無効にする必要があります。彼女は「コンピューターをスリープ状態にする」のドロップダウンをクリックし、「決して」を選択しません。