LoginSignup
0
0

PowerShellでカーソルを動かして.NET Frameworkライブラリに触れてみる

Last updated at Posted at 2024-05-11

はじめに

PowerShellでマウスカーソル動かしたくなったのでやってみる。

(スクリプト試してるときにカーソルが暴走して止められなくなったらCtrl+Breakで中断できる)

1. .NETクラスの追加

コマンドレットにはカーソルを動かすコマンドが無いので、System.Windows.Formsクラスを追加。

Add-Type -AssemblyName System.Windows.Forms

2. カーソルの位置の取得

[Windows.Forms.Cursor]::Position

こんな感じで座標が取れる
image.png

座標のXとYの値をいじればカーソルが動く。

3. カーソルの座標の加減算

これだとカーソルが動かない

Add-Type -AssemblyName System.Windows.Forms
$Cursor =  [Windows.Forms.Cursor]

for($i=0; $i -lt 3; $i++){
    $Cursor::Position.X += 10
    $Cursor::Position.Y += 10

    #検証用
    Write-Host "PositonX: " $Cursor::Position.X
    Write-Host "PositonY: " $Cursor::Position.Y
    Write-Host ""
}

座標も変わってない

PositonX:  1466
PositonY:  269

PositonX:  1466
PositonY:  269

PositonX:  1466
PositonY:  269

これは動く

#カーソルの位置取得
Add-Type -AssemblyName System.Windows.Forms
$Cursor =  [Windows.Forms.Cursor]

for($i=0; $i -lt 3; $i++){
    $Position = $Cursor::Position
    $Position.x += 10
    $Position.y += 10
    $Cursor::Position = $Position

    #検証用
    Write-Host "PositonX: " $Cursor::Position.X
    Write-Host "PositonY: " $Cursor::Position.Y
    Write-Host ""
}

座標も変わっている

PositonX:  1479
PositonY:  265

PositonX:  1489
PositonY:  275

PositonX:  1499
PositonY:  285

どのくらい動かすかにランダム性を持たせるなら、候補の数値を配列にしてGet-Randomに渡して数値を出すといいかも。

-1, 1 | Get-Random

おわりに

$Cursor::PositionのX座標、Y座標を変えるところをループ処理にすればカーソルを滑らかに動かせる。
少しアレンジすればカーソルに高速で反復横跳びさせることもできるはず。(使い道はないけど)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0