起動して、CapsLockが有効になるとマウスクリック連打が始まって、無効にすると終了するバッチファイル。
ここ一年くらい、ちょっとした便利ツールはなるべくPowerShellで作るようにしている。不確定仕様のまま納品日を迎えても、現場でテキストエディタで書き換えられるのが良い。
不確定の数×バリエーションぶんの設定項目を持つsetting.xmlを作るのは結構な負担だ。ほとんどの項目は、実際には使わないのに。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
@powershell -windowstyle hidden -NoProfile -ExecutionPolicy Unrestricted "&([ScriptBlock]::Create((cat -encoding utf8 \"%~f0\" | ? {$_.ReadCount -gt 2}) -join \"`n\"))" %* @exit /b 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); '@ $SendMouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru; # capslock がかかっていたら解除 if([System.Console]::CapsLock){ $wsh = New-Object -ComObject WScript.Shell $wsh.SendKeys('{CAPSLOCK}') } [int]$closeFlag = 0 while(1) { # 50/1000 秒待機 Start-Sleep -Milliseconds 50 if([System.Console]::CapsLock){ # capslock がかかったら左クリック $SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0); $SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0); $closeFlag = 1; }elseif ($closeFlag -eq 1) { # Write-Output("end") # capslock 外したら終了 exit } } |
◆ソース
https://github.com/umhr/Clicker
◆参考
PowerShellでキー入力の自動化
https://systemage.co.jp/blog/?p=1662
powerShellで無限ループと待機処理
http://harikofu.blog.fc2.com/blog-entry-77.html