Written in Japanese(UTF-8)
2020.05.15
INASOFT

/トップ/目次/管理人のひとこと(ブログ)/「マウスふるふる」の機能を実現するPowerShellスクリプトを作ってみる

2403091 (+0010)[+0336]

管理人のふたこと

「マウスふるふる」の機能を実現するPowerShellスクリプトを作ってみる



公開日:2020/05/15

マウスふるふるの先月分のダウンロード数が、先々月分に比べて2倍に伸びているようでした。

4月23日のブログにも書きましたが、リモートワークブームのおかげで、なぜだかSNS上で本ソフトの話題をよく見かけるようになったというのも起因していそうです。リモートワークのお供として(ある意味)役に立つとみなされたこと、あるいはそういうことで有名になり、本ソフトの本来の目的(OSの設定を変える権限がなくてもスリープを抑止できるとか、設定を元に戻してしまうタイプの監視ソフトに対する対応策)で使っていただける方が多くなったか、といったところかと推測します。本ソフトは、前身のMOUSELRのころから数えて15年の歴史があるソフトなのですが、2020年になって、時代が本ソフトの需要を呼び起こしたといったところでしょうか。

ただ、上記のブログ記事にも書いた通り、インターネットからファイルをダウンロードすることが許されないとか、許可されたexe以外を実行できない環境があるとのこと。

許可されたexe以外が実行できない環境への対策として、PowerShell版を同梱しているわけですが、インターネットからファイルをダウンロードすることが許されないという方への対応のため、5月10日のブログでPowerShell版のスクリプトを掲載しています。

しかしながら、環境によっては「ブログを閲覧できない」という方もいらっしゃるとのことで、今回はこのページにスクリプトを掲載することにしましたので、コピペしてご利用ください。

# マウスふるふる(PowerShell版) ver.2.0  (C)2020 INASOFT/T.Yabuki
# 50秒おきに、マウスを微妙に左右に揺らし、スクリーン セーバー等への移行の阻止を試みます。
# Ctrl+C を押すか、[×]ボタンを押すと終了。

# .NETのCursorクラスを利用するためにSystem.Windows.Formsをロード
add-type -AssemblyName System.Windows.Forms

$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
}


上記の内容をmousefr.ps1というファイル名で保存し、マウスで右クリック→「PowerShellで実行」で実行してください。

PowerShellの実行方法

このような画面が出たら実行開始です。50秒おきに非常にわずかにマウスが左右に揺れます。[×]ボタンを押すか、このウィンドウをアクティブにしてCtrl+Cを押すと終了します。

実行画面



本ページへは、自己責任の範囲内であれば自由にリンクしていただいて構いません。
本ページに掲載されている内容は、自由にお使いいただいて構いませんが、必ずしも筆者が内容を保証するものではありませんので、ご利用に際しては自己の責任においてお使いいただきますよう、お願いいたします。
このページのURLやアンカーは、サーバ運営・サイト運営・ページ運営・その他の都合により無告知で一時的あるいは永遠に消滅したり、変更したりする可能性がありますので、あらかじめご了承下さい。
本ページは、公開から1年半経過後の任意のタイミングで削除される予定です。本ページの内容は複製・公開していただいて構いません。


/トップ/目次/管理人のひとこと(ブログ)/「マウスふるふる」の機能を実現するPowerShellスクリプトを作ってみる