自動化スクリプトの実行中にマシンがロックされます。これは、さまざまなスクリプト間に長い間隔があるためです(これは、いくつかの理由で必要です)。この自動ロック機能を避けたい。問題は、セキュリティポリシーに従って、コントロールパネルからこの機能を無効にできないことです。システムのロックを解除する他の方法はありますか?
定期的にキーを押すことでロックを停止できると思いますので、 WScript.SendKeys を確認することをお勧めします。次に、それをスリープ状態のループに入れて、定期的に送信するようにします。
ただし、送信するキーに注意してください。他のキーには影響しません。
私はこれを行いました... 2つのSCROLLLOCKキーをすばやく送信するので、アプリケーションに干渉することはありません(まあ、何も深刻なことはありません)。これは60秒ごとに行われます。
set wsc = CreateObject("WScript.Shell")
Do
WScript.Sleep (60*1000)
wsc.SendKeys ("{SCROLLLOCK 2}")
Loop
ペアのファイルを使用しています...
最初のファイル(Keep_Awake__start.vbs)は、物事を起こしたりロック解除したりします。 2番目のファイル(Keep_Awake__end.vbs)は、通常のプロセスに戻りたいときにプロセスを終了します。
最初のファイル...
' Keep_Awake__start.vbs
' Graham Edwards
' Typical stored in Start Menu
'
' Use Keep_Awake__start.vbs to keep the computer from inactivity-based lockouts.
' Use Keep_Awake__end.vbs to remove Keep_Awake__start.vbs
' Largely pulled from st0le response
' Http://stackoverflow.com/questions/4457907/how-to-prevent-auto-locking-feature-of-an-xp-machine-using-vbscript
' --- Define Object
set wsc = CreateObject("WScript.Shell")
' --- Loop every so many minutes and change the scroll lock setting
Do
' Wait for ~2 minutes
WScript.Sleep (2*60*1000)
wsc.SendKeys ("{SCROLLLOCK 2}")
Loop
2番目のファイル...
' Keep_Awake__end.vbs
' Graham Edwards
' Use Keep_Awake__start.vbs to keep the computer from inactivity-based lockouts.
' Use Keep_Awake__end.vbs to remove Keep_Awake__start.vbs
' Largely pulled from Ansgar Wiechers response
' http://stackoverflow.com/questions/22324899/kill-a-vbscript-from-another-vbscript
' --- Define Object
Set wmi = GetObject("winmgmts://./root/cimv2")
' --- Search and Destroy
qry = "SELECT * FROM Win32_Process WHERE Name='wscript.exe' AND NOT " & _
"CommandLine LIKE '%" & Replace(WScript.ScriptFullName, "\", "\\") & "%'"
For Each p In wmi.ExecQuery(qry)
p.Terminate
Next
' --- Clean up
Set wmi = Nothing ' Release the Application object
ファイルは、通常のテキストエディターから作成して、どこにでも(デスクトップなど)保存できます。 .vbsファイル拡張子を付けてファイルを保存すると、実行可能になります。したがって、ファイルのアイコンをダブルクリックするだけで、開始または終了することができます(ダブルクリックするファイルによって異なります)。
ログインするとすぐに起動するように、Keep_Awake__start.vbsをWindowsのStartupフォルダーに保存できます。
機能する最も簡単な解決策は、mp3またはビデオファイルを開いて、Windowsメディアプレーヤーで継続的に再生することです(リピート機能を使用し、プレーヤーの音量をミュートします)。このようにして、スクリーンセーバーが表示されることも、システムがロックされることもありません。
Set wshShell =wscript.CreateObject("WScript.Shell")
do
wscript.sleep 55000
wshshell.sendkeys "{SCROLLLOCK}"
loop
このコードを使用して、ウィンドウが再度ロック解除されるのを防ぐことができます。
次のVBスクリプトコードを使用して、マシンのロックを解除したままにします。
Set objShell = CreateObject("WScript.Shell")
objShell.RegWrite "HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Control Panel\Desktop\ScreenSaverIsSecure", "0" , "REG_SZ"
Wscript.Echo "Your machine remains unlocked"
乾杯!!
シェルスクリプトを試して、タスクスケジューラでマウスの動きのシミュレーションをスケジュールしました。 + 1で簡単です。マウスをシフトしたピクセルに自動的に移動するため、画面は自動ロックしません(必要に応じて、これを構成するオプションがあります)。
リファレンス:Auto Mouse Mover- http://www.murgee.com/auto-mouse-mover/
私はこのようにしました
(外部ループ=宣言された変数)
'For 64 bit Excel.
Private Declare PtrSafe Function SetCursorPos Lib "user32" _
(ByVal x As Long, _
ByVal y As Long) As Long
Private Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
'For 32 bit Excel.
Private Declare Function SetCursorPos Lib "user32" _
(ByVal x As Long, _
ByVal y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
' default variable
private mousecounter as integer
(手順内)
Dim llCoord As POINTAPI
Dim activeXMousePos As Integer
Dim activeYMousePos As Integer
GetCursorPos llCoord
activeXMousePos = llCoord.Xcoord
activeYMousePos = llCoord.Ycoord
(ループ内):
If mousecounter <= 2 Then
SetCursorPos activeXMousePos - 1, activeYMousePos - 1
mousecounter = mousecounter + 1
End If
If mousecounter > 2 Then
SetCursorPos activeXMousePos + 2, activeYMousePos + 2
mousecounter = 0
End If
したがって、基本的にこのコードは、マウスを左上に1ピクセル、右下に1ピクセル移動し、各ループ間隔を移動します。他の値を宣言することもできますが、このマウスの動きはユーザーの邪魔をしないことがわかりました。
条件付きの宣言が必要な場合
#If vba7 and win64 then
'For 64 bit Excel.
Private Declare PtrSafe Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
#Else
'For 32 bit Excel.
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
#End If
これが自動化スイートの実行中の場合は、自動化スイートを使用してマウスTwitchを頻繁に実行してください。私がうまく機能しているのは、独自のカスタムスリープ機能があり、スリープ機能の一部として、マウスをひねる場合です。スクリプト間の長い間隔にこれを使用します。