PowerShellでアプリケーションのウィンドウサイズを変更する。

PoweShell コンピュータ
PowerShell

記事の素材として、よくウィンドウのスクリーンショットを取得しますが、出来上がった画像を後から任意のサイズに加工しています。
事前にウィンドウサイズを指定してスクリーンショットを取れば良いのではと思い立ち、ウィンドウサイズを変更するスクリプトを書いてみました。

スクリプト

<#
Google Chromeのウィンドウサイズを800x600にセットするスクリプト

(注)フルスクリーンの場合ウィンドウモードに変更してから実行のこと
#>
# アプリケーション名
$name = "chrome"
# X座標
$x = 0
# Y座標
$y = 0
# 幅
$widht = 800
# 高さ
$height = 600

# C#
Add-Type @"
    using System;
    using System.Runtime.InteropServices;

    public class Win32Api {
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);
    }
"@

Get-Process -Name $name | ? { $_.MainWindowTitle -ne "" } | % {
    [Win32Api]::MoveWindow($_.MainWindowHandle, $x, $y, $widht, $height, $true)
} | Out-Null

あとがき

$nameにアプリケーション名をセットしてください。(デフォルトはグーグルクローム)
$x,$yで座標、$height,$widhtで高さと幅をセットします。
肝となるウィンドウサイズの変更はC#で書いたWindows APIのMoveWindow関数の仕事となります。

コメント