INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
本業の方のお仕事が再び忙しくなりつつあるので、断続的にしばらく更新が止まることがあります。

目次 | ←前へ / 2020-05-10 00:00 / 次へ→ / 最新へ⇒

■「マウスふるふる」マウス移動イベントだけでなく、座標設定のAPIも呼び出した版の公開について

2020/ 5/10 0:00:00


RSSRSS配信中

https://www.inasoft.org/








昨日付で、「マウスふるふる ver.1.14.08β」を公開しています。

ダウンロードはトップページからどうぞ。

更新内容としては、先日のブログで書いた、マウス移動イベントだけでなく座標変更を維持するようなモードの追加となります。

20200508_MOUSEFR_ss2.png

設定ダイアログに「マウスの揺らし方」を新設し、「揺れが目で見てわかるように揺れ幅を大きくする」を吸収しました。

また、選択肢として「1ピクセル分揺らし次のタイミングまでそのまま」を追加しました。

これは、マウス座標を認識して離席等を判定するアプリ向けのモードということになります。


このベータ版に同梱するPowerShell版のスクリプトについても、更新しています。

こんな感じの内容です。

(実行時に文字化けする or 実行できなくなるため、保存時に文字コードはShift_JISやBOM付UTF-8等にしてください。どうしてもうまくいかない場合は、日本語(漢字・ひらがな・カタカナ)で書かれた行をすべて削除してください)

# マウスふるふる(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というファイル名で保存(文字コードはShift_JISやBOM付UTF-8等にする[→メモ帳で保存する場合の操作法])し、マウスで右クリック→「PowerShellで実行」で実行してください。


このような画面が出たら実行開始です。50秒おきに非常にわずかにマウスが左右に揺れます。

[×]ボタンを押すか、このウィンドウをアクティブにしてCtrl+Cを押すと終了します。

[→実行ポリシーの変更の警告が出た場合の対処法]


Posted by しまくま at 2020/08/21 19:27:38
マウスふるふるは1.13.07から(を)愛用していまして、このスクリプトも大変ありがたいです。

このスクリプトをスタートアップ時に自動実行したいのですが、どうしたらよいでしょうか。
見よう見まねでバッチファイルを書いてスタートアップ・フォルダに入れたのですが、コマンドプロンプトの画面らしいものが一瞬で開いて閉じて、スクリプトの実行状態が続きませんでした。

Posted by Ayacy at 2020/08/21 20:40:26
愛用いただきありがとうございます。

さて、バッチファイルを書いてみたとのことなのですが、おそらく、その「一瞬で開いて閉じて」の瞬間に、何らかのエラーメッセージが一瞬だけ出ているものと思われます。おそらく、原因を探るにはそれを観る必要があります。

そして、スタートアップ時だけでなく、普通にそのバッチファイルを実行した時にも、同じメッセージが出ているのではないかと推測します。(私の過去の経験から)

この場合、コマンドプロンプトを開き、そのバッチファイルを手動で実行してみると良いかもしれません。そうすると、エラーメッセージが出た後に画面が閉じてしまうということはないと思いますので、エラーメッセージをゆっくり観察し、対処策を練ることができるのではないかと思います。

また、バッチファイルの実行開始までは正常に行えていそうという場合は、バッチファイルの最後にPAUSEコマンドを入れると良いかと思います。これで、画面が閉じる前にエラーメッセージを観察することができるようになるかと思います。

Posted by しまくま at 2020/08/22 13:15:20
初歩的なミスに、丁寧にご説明いただいて、ありがとうございました。
おかげさまで、ps1ファイルをUTF8ではなくSJISで保存したらエラーが出なくなりました。

なお、バッチファイルの内容は次の通りです。
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& %USERPROFILE%\Desktop\mousefr.ps1"

バッチで実行するとコマンドプロンプト窓に「Ctrl+Cで終了します」が出た状態になります。ps1ファイルを右クリック→「PowerShellで実行」で実行した時のようなPowerShellの窓が表示されないのですが、前述の状態(コマンドプロンプト窓に「Ctrl+Cで終了します」が出た状態)でスクリプトが動いているということなのでしょうか?

何度もお尋ねして済みません。ご多忙の節は、どうかご放念ください。

Posted by Ayacy at 2020/08/22 14:14:41
なるほど、文字コードの問題でしたか。
そういえば、ごく最近「メモ帳」のデフォルト文字コードがSJISではなくUTF8に仕様変更されたけど、バッチファイル等は依然としてSJISで動こうとするというトラブル事例もありましたね。
このPowerShellスクリプトもSJISで保存するよう明記しておいた方が混乱が避けられそうですね。
あとで追記したいと思います。

さて、表示されているウィンドウがコマンドプロンプトのものになっているという件ですが、これは特に問題ないはずだったかと思います。スクリプトは動いています。



目次 | ←前へ / 2020-05-10 00:00 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。




2558636 (+0263)[+0651]

Copyright© 2010-2021 INASOFT