技術メモ、Tips、忘備録

技術系のメモ、試してみたこと、その他

【Powershell】任意のアプリのウィンドウサイズ等を指定して起動する

前置き

GUIアプリケーションを実行すると、基本的には最後に閉じた状態で開きます。
ニッチな需要だと思いますが、例えばGUIアプリを利用したシェルスクリプトではウィンドウを隠したり、特定の条件のときだけアプリをフルサイズで開きたい、ということがあるかもしれません。
(ちなみに私は仕事中にそういうことがありました。) そこで、その方法について記載します。

スクリプト記述

※注意
コンソールのコマンド実行を説明するときは、習慣的に$がつけられることが多いです。(例えば$dirと書かれていたらコンソールでdirと打つ)
powershellでは変数を定義するときに、$varのように書くとvarという名前の変数を定義できます。
なので、ここで紹介するスクリプト$を含めて実行してください。

それでは、いきなりですがシェルはこちら

$p =New-Object -TypeName System.Diagnostics.ProcessStartInfo
$p.FileName ="{プログラム名}"
$p.WindowStyle =[System.Diagnostics.ProcessWindowStyle]::{設定値}
[System.Diagnostics.Process]::Start($p)

シェル自体の説明は割愛します。

  • {プログラム名}には任意のファイルを指定できます。
    例えば$env:LOCALAPPDATA\Programs\Microsoft VS Code\bin\codeや、パスが通っていればnotepadのように名前だけの指定もできます。
    また、hoge.txtのように実行ファイル以外を指定した場合は、その拡張子に紐づいたアプリが実行されます。(.txtだとnotepad.exe等)

  • {設定値}にはSystem.Diagnostics.ProcessWindowStyle型の値を指定できます。
    具体的には以下のいずれかを指定できます。

Hidden Maximized Minimized Normal
非表示 最大化 最小化 通常(最後に閉じたときの状態)
動作確認

試しにメモ帳をサイズ最大で起動してみましょう

PS C:\> $p =New-Object -TypeName System.Diagnostics.ProcessStartInfo
>> $p.FileName ="notepad"
>> $p.WindowStyle =[System.Diagnostics.ProcessWindowStyle]::Maximized
>> [System.Diagnostics.Process]::Start($p)                                                                              
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
     28       5     1032       2188       0.02   1132   1 notepad

f:id:monkey999por:20200826233521p:plain
大丈夫そうですね。
読んでいただきありがとうございました。

・免責事項

当方は、当記事にコンテンツを掲載するにあたって、その内容、機能等について細心の注意を払っておりますが、コンテンツの内容が正確であるかどうか、最新のものであるかどうか、安全なものであるか等について保証をするものではなく、何らの責任を負うものではありません。また、当方は通知することなく当記事に掲載した情報の訂正、修正、追加、中断、削除等をいつでも行うことができるものとします。また、当記事、またはコンテンツのご利用により、万一、ご利用者様に何らかの不都合や損害が発生したとしても、当方は何らの責任を負うものではありません。