バッチ処理でマウスを操作してTeamsが退席中になるのを防ぐ

toc目次

はじめに

バッチ処理(PowerShellスクリプト)でマウスイベントを発生させてTeamsが退席中になるのを防ぐ方法。

PCの無操作による端末のロックやスクリーンセーバーの起動を防ぐこともできます。

マウスイベントを発生させるバッチ

以下のコードをバッチファイル形式(MouseEvent.batなど)の名前で保存します。

@powershell -NoProfile -ExecutionPolicy Unrestricted "&([ScriptBlock]::Create((cat \"%~f0\" | ?{$_.ReadCount -gt 1}) -join \"`n\"))" %* & goto:eof

$Signature = @'
[DllImport("user32.dll")]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$MouseEvent = Add-Type -MemberDefinition $Signature -Name "Win32MouseEvent" -Namespace Win32Functions -PassThru

echo "Press <Ctrl+C> to exit"
while ($true) {
  Start-Sleep -s 50
  $MouseEvent::mouse_event(1, 0, 0, 0, 0)
}

バッチを実行するとコマンドプロンプトの画面が開きます。
コマンドプロンプト

コマンドプロンプトの画面が出ている間は50秒ごとにマウスイベントが発生します。
秒数を変更したい場合は、コードのStart-Sleep -s 50の数字を変更してください。

バッチを終了するにはCtrl + Cを押すか、コマンドプロンプトの画面を閉じます。

備考

移動しない(移動量:0)のマウスイベントを実行しているため、通常の作業で問題が発生したことはないですが、作業によっては悪影響が出るかもしれないので、自己責任で実施してください。

「スクリーンセーバー 防止 バッチ」などのキーワードで検索すると色々情報が見つかるので、詳細を知りたい方はそちらを参考に。

参考