Written in Japanese(UTF-8)
2021.11.18
INASOFT


/トップ/マウスふるふる ダウンロード/WebHelp/ヘルプトップ

自由にプログラムをインストールできない環境を利用する方のためのPowerShellスクリプト版に関する解説

「マウスふるふるをインストールしたいけど、当社のPCには自由にソフトウェアをインストールできない」「自由にexeファイルを実行できない」「そもそもフリーソフトをダウンロードできない」という声も聴かれます。

そういった場合の対策として、最近のPCであれば、Windows付属の機能として必ず入っているPowerShellを使ったスクリプト版バッチファイル版(PowerShell埋込方式)を同梱しています。また、こちらのインターネットサイトにコピペ可能なスクリプトを用意しています。

ここでは、PowerShellスクリプト版について解説します。

1. .NETのCursorクラスやmouse_event() APIを使用するための準備

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

いわゆる「おまじない」です。Cursorクラスを使用するためにFormsを使えるようにし、Windows APIを使えるようにするためのdllの読み込みや関数型定義を行っています。



2. 定数の用意

# マウス移動
$MOUSEEVENTF_MOVE = 0x00000001

# スリープ秒数
$SleepSec = 50

# マウスの振れ幅
$MoveMouseDistance = 1

定数定義です。WindowsのC++ライブラリを使用するならば、MOUSEEVENTF_MOVEは定義済みですが、PowerShellでWindows APIを使用する場合は定義が必要になります。

その他に、ループ間隔(秒数)・マウスの振れ幅(ミッキー単位)を定義しています。



3. 永久ループしつつマウスを小さく動かす

while ($true) {
    # スリープ
    Start-Sleep $SleepSec

    # マウス座標を少し左にずらし、すぐに右にずらす
    $SendMouseEvent::mouse_event($MOUSEEVENTF_MOVE, -$MoveMouseDistance, 0, 0, 0)
    $SendMouseEvent::mouse_event($MOUSEEVENTF_MOVE, $MoveMouseDistance, 0, 0, 0)
}

マウスを揺らす部分の本体です。上記の部分で永久ループとなりますので、スクリプトを終了するには、[×]ボタンを押すか、Ctrlキーを押しながらCキーを押して強制終了します。

本ソフトに同梱しているmousefr.ps1、および、ネット上で公開しているスクリプトでは、これに+αの要素を加えているだけですので、要旨としては以上になります。

もし、スクリプト開始時に次のようなメッセージが出てきた場合は、「Y」を応答します。

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"):

なお、最初に掲載したリンク先のスクリプトをコピペして利用する場合には重要な注意点があります。

最近のWindowsはUTF-8推しなところがあって、メモ帳のデフォルトの保存形式が「Shift_JIS」から「UTF-8」に変更されたりしましたが、バッチファイルやPowerShellスクリプトは古くから「Shift_JIS」を前提として動いていました。これらが急にUTF-8として解釈されてしまうと大量の不具合が発生してしまうことになるため、バッチファイルやPowerShellスクリプトは、依然としてデフォルトではShift_JISで書かれていると認識されて動作します。

以上のような経緯から、メモ帳は「UTF-8」で保存し、PowerShellスクリプトは「Shift_JIS」だと認識して動作して、逆に不具合が発生する事態が新たに生じています。

これを防ぐには、次のいずれかにします。

メモ帳で保存する際の文字コード指定

BOM(Byte Order Mark) とは、テキストファイルの冒頭の数バイトに特殊なコードを入れることで、そのテキストファイルの文字コードを判別できるようにするものです。

エクスプローラから実行するには、保存したスクリプトファイルで右クリックメニューを開き「PowerShell で実行」を選択します。

PowerShell版実行方法




 おまけページの目次へ戻る
 目次へ
※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は、右上の作成日付の時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。

■このページに関するご意見をお待ちしております → フィードバックページ

/トップ/マウスふるふる ダウンロード/WebHelp/ヘルプトップ