テレワークしてるけど、サボってると思われたくないアナタ。
『マウスを自動で動かす方法はあるの?』
『インストールはしなくて良いの?』
こんな疑問に答えます。
【Windows】マウスを自動で動かすインストール不要のスクリプト
マウスを自動で動かすインストール不要のスクリプトです。
WindowsのPowerShell上で動作します。
コマンドプロンプト(DOSプロンプト)やMacでは動作しませんのでご注意ください。
ご利用は自己責任でお願いしますm(_ _)m
# 終了方法:Ctrl+Cを押す、または、[×]ボタンを押す
# System.Windows.Formsをロード(.NETのCursorクラスを利用のため)
add-type -AssemblyName System.Windows.Forms
# mouse_event APIを利用準備
$sgnt=@'
[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);
'@
$SendME = Add-Type -memberDefinition $sgnt -name "Win32MouseEventNew" -namespace Win32Functions -passThru
echo "Ctrl+Cで終了"
# マウス移動
$ME_MOVE = 0x00000001
# スリープ秒数(100秒)
$SleepSec = 100
# ・マウス移動イベントの振幅
$MMDist = 1
# ・マウスの座標を左右へ動かす幅
$MMDistX = 1
# 偶数回目は左、奇数回目は右へずらすフラグ
$Flg = $true
# 永久ループ(Ctrl+Cで割込み終了)
while ($true) {
# スリープさせる
Start-Sleep $SleepSec
# マウスのX,Y座標取得
$x = [System.Windows.Forms.Cursor]::Position.X
$y = [System.Windows.Forms.Cursor]::Position.Y
# マウスを左に移動
$SendME::mouse_event($ME_MOVE, -$MMDist, 0, 0, 0)
# マウスを右に移動
$SendME::mouse_event($ME_MOVE, $MMDist, 0, 0, 0)
# マウスの移動決定フラグ(左か右)
if ($Flg) {
$x += $MMDistX
$Flg = $false;
}
else {
$x -= $MMDistX
$Flg = $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スクリプトを実行させる手順です。
マウスを自動で動かすPowerShellスクリプトの実行手順
マウスを自動で動かすPowerShellスクリプトの実行手順です。
- PowerShellスクリプト(上記:前節)をコピペして拡張子をps1として保存
例)Cドライブ直下にmusemove.ps1を保存
- WindowsPowerShellを起動
例1)ファイル名を指定して起動
ショートカットキー「Win + R」をクリック
powershellを入力
例2)メニューから起動
メニューからWindowsPowerShellを選んで起動
- 保存したディレクトリまで移動
例)Cドライブの直下まで移動
cd c:\
- PowerShellスクリプトの実行ポリシーを変更
例)Set-ExecutionPolicyの -Scope オプションで Process を指定
起動中のPowerSehll のみにスクリプト実行許可ポリシーを与える
→PowerShell を閉じると実行許可ポリシーが解除されるのでセキュリティリスクが低いSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Polic ies のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"):Y
ここでYを入力します(小文字でもOK)
- マウスが自動で動くスクリプトを実行
PS C:\> .\mousemove.ps1 Ctrl+Cで終了
実行ポリシーを変更しないと、エラーになるからです。
次で詳しく説明します♪
PowerShellの実行ポリシーを変更する理由
PowerShellの実行ポリシーを変更する理由は…
いきなりスクリプトを実行するとセキュリティエラーになるから
です。
↓セキュリティエラーのメッセージはこんな感じ。
.\mousemove.ps1 : このシステムではスクリプトの実行が無効になっているため、 ファイル C:\mousemove.ps1 を読み込むことができません。 詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してくださ い。 発生場所 行:1 文字:1 + .\mousemove.ps1 + ~~~~~~~~~~~~~~~ + CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
このエラーの原因は…
PowerShell スクリプトの実行ポリシーで許可されていないため
です。
コマンド「Get-ExecutionPolicy」で実行ポリシーが確認できます。
PS C:\> Get-ExecutionPolicy Restricted
Restrictedは「すべてのスクリプトの実行を制限」するポリシーです。
初期設定はRestrictedのため、ポリシーを変更しないとスクリプト実行エラーとなります。
というわけで、実行ポリシーを変えているんです。
ちなみに、
“Restrict”は”制限”という意味です♪
↓実行ポリシーの一覧はこちら
実行ポリシー | 内容 |
Restricted | 全てのスクリプトが制限される |
AllSigned | 全ての署名付きスクリプトのみ実行可能 |
RemoteSigned | ローカルのファイルが実行可能 |
Unrestricted | 全てのスクリプトが制限なし |
Bypass | すべてのファイルが実行可能(警告・確認なし) |
前節のスクリプト実行手順では、デフォルトのRestrictedを変更させないように-Scopeオプションでプロセスのみに限定しました。
(-Scopeオプションあり)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
PowerShellを閉じると元のポリシー(Restricted:制限モード)に戻るので、セキュリティリスクが低いからです。
閉じてもポリシーが戻らなくてOKの場合は、-Scopeオプションを付与せずに実施できます。
(-Scopeオプションなし)
Set-ExecutionPolicy Remotesigned
上記(-Scopeオプションなし)を実施する場合は、管理者としてPowerShellを実行する必要があります。
管理者として実行する方法は…
メニューからWindowsPowerShellを選んで、右クリックで「管理者として実行する」です。
【まとめ】マウスを自動で動かすインストール不要のスクリプト
今回はマウスを自動で動かすインストール不要のスクリプトと実行手順を紹介しました。
WindowsのPowerShellでのみ動作するので、ご了承ください。
スクリプト実行時は、PowerShellの実行ポリシーを変更する必要がある
という点が注意ポイントでしたね。
Teams等では一定時間作業をしていないとステータスが”退席中”になるケースがあります。
「ちょっとトイレに行くだけなんで、サボってると思われたくない」
と言うときなどにも使えるかもしれませんね。
使い道は色々とあると思いますが、ご利用は自己責任でお願いしますm(_ _)m
「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪
「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪
LINEでのお問合わせも受付中!
LINE公式アカウント
メッセージをお待ちしています!
- 応用情報技術者
- Oracle Master Gold
- Java SE Gold
- Java EE Webコンポーネントディベロッパ
- Python エンジニア認定データ分析
- 簿記2級