絶筆(n回目)

ベストエフォートで

Windowsで自動スリープ・ロックを回避するスクリプト

PowerShellでマウスを少しだけ動かして「n分未操作で自動スリープ」を回避します。 Teams会議中に発動してしまうのを防ぐことを想定しています。

Add-Type -AssemblyName System.Windows.Forms
$sign=
@'
     [DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
     public static extern void mouse_event(long dwFlags, long dx, long dy, long cgetLocBtns, long dwExtraInfo);
'@
$MouseEvent = Add-Type -memberDefinition $sign -name "FooBarJiggler" -namespace Win32Functions -passThru

$dwFlags = 0x00000001
$jiggle = 1
$sec = 50

while($true){
  echo (Date -Format "HH:mm:ss")
  $MouseEvent::mouse_event($dwFlags, $jiggle, 0,0,0)
  $jiggle = -$jiggle
  Sleep $sec
}

ただし、mouse_eventは非推奨だったはずです。SendInputを使うべきっぽいです。