私がWindows環境で作業をしていると、いつの間にか色々なアプリケーションのウインドウが表示されています。
目的のウインドウに切り替えようとすると、ウインドウをかきわけるのに、何度もマウス操作しなければなりません。タスクバーの操作でも、何回かクリックが必要です。
特に、10個ぐらい開いてしまっているエクスプローラーの操作が大変です。
そこで、PowerShellを使って、これらのエクスプローラーをきれいに並べることで、扱いやすくしてみました。
ポイント
-
$shell=New-Object -ComObject Shell.Application; $shell.Windows()
でエクスプローラーの情報を取得できました。 -
$shell.Windows() | foreach { $_.Left=0; $_.Top=0; $_.Width=800; $_.Height=600; }
でエクスプローラーの位置とサイズを変更できました。 -
[System.Windows.Forms.Screen]::PrimaryScreen
や[System.Windows.Forms.Screen]::AllScreens
で画面サイズを取得できました。
結果イメージ
次のように、エクスプローラーを並べてみました。
スクリプト
画面の左上から右下へ、少しずらしながら重ねて並べる。
なお、重ねる順番は、表示しているパス順にしました。
エクスプローラーを左上から並べる.ps1
$w = 800
$h = 600
$x = 0
$y = 0
$dx = 30
$dy = 30
$shell = New-Object -ComObject Shell.Application
$shell.Windows() | where { $_.Name -eq "エクスプローラー" } | sort LocationURL | foreach {
$_.Left=$x; $_.Top=$y; $_.Width=$w; $_.Height=$h; $x+=$dx; $y+=$dy;
}
同様に、画面右下を基準に並べる。
エクスプローラーを右下から並べる.ps1
Add-Type -AssemblyName System.Windows.Forms
$sw = [System.Windows.Forms.Screen]::PrimaryScreen.WorkingArea.Width
$sh = [System.Windows.Forms.Screen]::PrimaryScreen.WorkingArea.Height
$w = 800
$h = 600
$x = $sw - $w
$y = $sh - $h
$dx = -30
$dy = -30
$shell = New-Object -ComObject Shell.Application
$shell.Windows() | where { $_.Name -eq "エクスプローラー" } | sort LocationURL | foreach {
$_.Left=$x; $_.Top=$y; $_.Width=$w; $_.Height=$h; $x+=$dx; $y+=$dy;
}
動作確認環境
- Windows 10
- PowerShell 5.1