テレワークなどで作業している時、Slack・Teams・Chatworkなどのチャットツールを退席にしたくない時ってないですか?そんな時に役立つインストール不要のスクリプトを紹介いたします。
INASOFT様サイトの「マウスふるふる」の機能を実現するPowerShellスクリプトを作ってみるの記事を参照しております。※実際に使用させていただいております、ありがとうございます!
マウスを自動で動かすインストール不要のスクリプト
紹介するのはWindowsのPowerShellのみとなります。WindowsでもコマンドプロンプトやMacでは動作しません。
※PowerShellのバージョン等によって動作しない場合もあります。
以下のスクリプトを拡張子「ps1」として保存します。
# マウスふるふる(PowerShell版) ver.2.0 (C)2020 INASOFT/T.Yabuki
# 50秒おきに、マウスを微妙に左右に揺らし、スクリーン セーバー等への移行の阻止を試みます。
# Ctrl+C を押すか、[×]ボタンを押すと終了。
# .NETのCursorクラスを利用するためにSystem.Windows.Formsをロード
add-type -AssemblyName System.Windows.Forms
# mouse_event APIを利用するための準備
$signature=@'
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$SendMouseEvent = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru
echo "Ctrl+Cで終了します。"
# マウス移動
$MOUSEEVENTF_MOVE = 0x00000001
# スリープ秒数
$SleepSec = 50
# マウスの振れ幅
# ・マウスの移動イベント生成用の振れ幅
$MoveMouseDistance = 1
# ・マウスの座標を左右にずらす用の振れ幅
$MoveMouseDistanceX = 1
# 偶数回数目は左へ、奇数回数目で右へずらすためのフラグ
$Flag = $true
# 永久ループ
while ($true) {
# スリープ
Start-Sleep $SleepSec
# 現在のマウスのX,Y座標を取得
$x = [System.Windows.Forms.Cursor]::Position.X
$y = [System.Windows.Forms.Cursor]::Position.Y
# マウス座標を少しずらす(マウスイベントを監視するOS(スクリーンセーバー、スリープ)対策)
$SendMouseEvent::mouse_event($MOUSEEVENTF_MOVE, -$MoveMouseDistance, 0, 0, 0)
# マウス座標を少し右にずらす(マウスイベントを監視するOS(スクリーンセーバー、スリープ)対策)
$SendMouseEvent::mouse_event($MOUSEEVENTF_MOVE, $MoveMouseDistance, 0, 0, 0)
# 座標を監視するアプリ対策(座標を左か右に1ピクセル分ずらすだけにする)
if ($Flag) {
$x += $MoveMouseDistanceX
$Flag = $false;
}
else {
$x -= $MoveMouseDistanceX
$Flag = $true
}
[System.Windows.Forms.Cursor]::Position = new-object System.Drawing.Point($x, $y)
$x = [System.Windows.Forms.Cursor]::Position.X
$y = [System.Windows.Forms.Cursor]::Position.Y
}
PowerShellを起動し実行
PowerShellを実行す方法は以下のようにいくつかあります。
- 「Winキー + R」でファイル名を指定して実行を起動し、「powershell」と入力しOKボタンを押す
- スタートメニュー内で「PowerShell」で検索をかけて実行
PowerShellを起動したら、保存した「ps1」ファイルを開き、内容をコピーしPowerShell内にペーストしてEnterで実行できます。または、保存した「ps1」ファイルを右クリック → PowerShellで実行でも可能です。
PowerShellスクリプトの実行ポリシーを変更
PowerShellを起動し、保存したファイルを実行した際に以下のメッセージが出る場合があります。
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Polic
ies のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"):Y
メッセージが表示される場合は都度「Y」を押して実行するか、実行ポリシーを変更して表示されないようします。
実行ポリシーを変更するには以下を入力してください。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
上記を入力する事で、現在ログインしているユーザーはローカルに作成されたPowerShellスクリプトを実行可能となります。(ダウンロードしたスクリプトは署名が必要となるようです)
以上が、自動でマウスカーソルを動かしチャットツールの退席を防ぐ方法となります。
状況に合わせて上手く使っていきたいですね。