いつもまじめな話題だと飽きてしまうのでたまには肩の力を抜いたプログラムでも。
土曜日は面白いプログラムで疲れを癒しましょう。
UIAutomationとPowerShellを組み合わせて、メモ帳を所せましと暴れさせてみました。
目がちかちかする・・・。
検証した環境
Windows10
PowerShell5.1
ソース
PowerShellを起動して下記のコードを貼り付けてエンターを押すと暴れ出します。
PowerShellの起動方法はこちら⇒【PowerShell入門】PowerShellとは?【起動からコマンドの実行までを解説】 - 適材適所
UIAutomation+PowerShellの記事⇒【UI Automation,PowerShell】ウィンドウを移動・サイズを変更する最も簡単なプログラム - 適材適所
#ウィンドウの新しい幅 (ピクセル単位) $width=300 #ウィンドウの新しい高さ (ピクセル単位)。 $height=300 #コントロールの左側の絶対画面座標。 $x=0 #コントロールの上部の絶対画面座標。 $y=0 Add-Type -AssemblyName UIAutomationClient $notepad=Start-Process notepad -PassThru Start-Sleep 1 $hwnd=$notepad.MainWindowHandle #ハンドルからウィンドウを取得する $window=[System.Windows.Automation.AutomationElement]::FromHandle($hwnd) #ウィンドウサイズの状態を把握するためにWindowPatternを使う $windowPattern=$window.GetCurrentPattern([System.Windows.Automation.WindowPattern]::Pattern) #ウィンドウサイズを変更する準備としてサイズを通常に変更する $windowPattern.SetWindowVisualState([System.Windows.Automation.WindowVisualState]::Normal) #ウィンドウサイズを変更するためのパターン。 $transformPattern=$window.GetCurrentPattern([System.Windows.Automation.TransformPattern]::Pattern) #Maximamだと移動もサイズ変更もできないので適当なサイズに変更する。 $transformPattern.Resize($width,$height) #暴れる間隔 $sleep=0.5 #暴れる秒数 $duration=5 $startTime=Get-Date while($true) { Start-Sleep$sleep $transformPattern.Move($x,$y) $x=Get-Random -Maximum 1000 -Minimum 0 $y=Get-Random -Maximum 1000 -Minimum 0 $currentTime=Get-Date $durationMinute=($currentTime-$startTime).Seconds if(($durationMinute -ge $duration) -or $notepad.HasExited){ Stop-Process $notepad return } }
この辺りの変数の値を直すと暴れる時間や間隔をカスタマイズ?できます。
#暴れる間隔 $sleep=0.5 #暴れる秒数 $duration=5
終わりに
いきなり自分のPCでメモ帳が暴れ出したらびっくりしますよね。
くれぐれも誰かのパソコンに仕込んだりしてはいけませんよ!!悪用厳禁!!
というわけで、ぜひご自分のPCで試してみてください。
ここまでお読みいただき、ありがとうございました。