プログラミング

【Windows】マウスを自動で動かすインストール不要のスクリプト

  • このエントリーをはてなブックマークに追加
  • LINEで送る

テレワークしてるけど、サボってると思われたくないアナタ。

『マウスを自動で動かす方法はあるの?』
『インストールはしなくて良いの?』

こんな疑問に答えます。

SE歴25年のオッサンが解説するぞい!
SEおっさん
SEおっさん

【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おっさん
SEおっさん
ここまで読んでくれてありがとう!

「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪

「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪

LINEでのお問合わせも受付中!
LINE公式アカウント

メッセージをお待ちしています!

取得資格
  • 応用情報技術者
  • Oracle Master Gold
  • Java Silver SE
  • Java EE Webコンポーネントディベロッパ
  • Python エンジニア認定データ分析
  • 簿記2級


スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • LINEで送る

コメントを残す

*