ランダムで指定した位置を継続的にクリックするPowerShellのプログラムを作成した

友達に依頼されたので作った。

チャットアプリがオンラインかどうかを上司に監視されるからとのこと。
上司もそんな暇ではないだろう・・・と思いつつ、一杯奢ってくれると言われたので快諾した。

っで、なぜPowerShellにしたかというと、これならコピペで動かせるし、自分で作ったものなら会社のセキュリティソフトにも引っかからないだろうと思ったからです。

こちらのサイトを参考にさせていただきました。

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("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);
'@
$SendMouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru

function SingleClickAt($x, $y){
    [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)

    $SendMouseClick::mouse_event(0x0002, 0, 0, 0, 0);
    $SendMouseClick::mouse_event(0x0004, 0, 0, 0, 0);
}

while($true)
{
$x = Get-Random -Minimum 1870 -Maximum 1900
$y = Get-Random -Minimum 500 -Maximum 520
SingleClickAt $x $y
Start-Sleep -s 60
}

少しアレンジしたところと言えば、クリックする位置をある範囲のランダムにして継続的にクリックするようにしたところです。

PowerShellの実行windowを消せば終了する。

ざっくり使い方解説

まずはps1というファイルを作ります。名前はなんでもよいです。

プログラムのコードをメモ帳か何かでコピペして保存する。

右クリックしてPowerShellで実行を押す

ちなみにテストはしてないです。

クリックの座標を変更したければ、以下の数値を変更してください。
x軸の座標とy軸の座標で分けてます。

$x = Get-Random -Minimum 1870 -Maximum 1900
$y = Get-Random -Minimum 500 -Maximum 520

例えば、左上の方をクリックしたければ以下のようにすればいいと思います。

$x = Get-Random -Minimum 0 -Maximum 20
$y = Get-Random -Minimum 0 -Maximum 20

クリックの頻度を変更したい場合は60が待機時間(秒)なので、任意の時間に変更すればいいです。

Start-Sleep -s 60

WordPress

Posted by takumioda