kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

エクスプローラーが散らかってしまう? PowerShellで整理できました!

私がWindows環境で作業をしていると、いつの間にか色々なアプリケーションのウインドウが表示されています。 目的のウインドウに切り替えようとすると、ウインドウをかきわけるのに、何度もマウス操作しなければなりません。タスクバーの操作でも、何回かクリックが必要です。 特に、10個ぐらい開いてしまっているエクスプローラーの操作が大変です。

そこで、PowerShellを使って、これらのエクスプローラーをきれいに並べることで、扱いやすくしてみました。

ポイント

  1. $shell=New-Object -ComObject Shell.Application; $shell.Windows()エクスプローラーの情報を取得できました。
  2. $shell.Windows() | foreach { $_.Left=0; $_.Top=0; $_.Width=800; $_.Height=600; }エクスプローラーの位置とサイズを変更できました。
  3. [System.Windows.Forms.Screen]::PrimaryScreen[System.Windows.Forms.Screen]::AllScreens で画面サイズを取得できました。

結果イメージ

次のように、エクスプローラーを並べてみました。

コメント 2020-07-26 203203_2.png

スクリプト

画面の左上から右下へ、少しずらしながら重ねて並べる。 なお、重ねる順番は、表示しているパス順にしました。

$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;
}

同様に、画面右下を基準に並べる。

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;
}

動作確認環境

参考にさせていただいたサイト