shine-Notes

ゆるふわ思考ダンプ

PowerShellでキーボード操作を行う

【サマリ】
・System.Windows.Forms.SendKeysでキー操作をPowerShellから実行できる
・ただし、操作したい対象によっては上手く使えないこと有り

【詳細】
Windows PCで作業している時に、都合上画面のスクリーンショットを撮りまくりたいと思い、まず「きゃぷつれ」https://www.vector.co.jp/soft/winnt/art/se504736.htmlを導入した。

だが導入したらしたで今度はAlt+PrintScreenを連打することになり、こういう操作こそ自動化できないかなー、でもアプリケーション入れたくないなー、と思い、主題の発想に至る。

結論としては出来たのだが、我ながらイケてないやり方になった。
・以下の内容を.ps1に保存して、キャプチャを取りたい画面を開いておく。
・Alt+Tabで目的の画面が選択されることを確認する。
・.ps1を実行
本来ならrunで実行対象のパスをシェル内に書きたかったのだが、今回は対象の都合上NG。
数分間悩み、Alt+Tabを使うという下策となった。

add-type -AssemblyName System.Windows.Forms

#AltTab
#自分のPCだと2回で上手く選択された
[System.Windows.Forms.SendKeys]::SendWait("%{TAB}")
[System.Windows.Forms.SendKeys]::SendWait("%{TAB}")

#ループ回数ぶんAltPrintscreenしたあと「→」この例では3回
for ($i = 0; $i -lt 3;$i++)
{
    [System.Windows.Forms.SendKeys]::SendWait("%{PRTSC}")
    [System.Windows.Forms.SendKeys]::SendWait("{RIGHT}")
}

#F5
[System.Windows.Forms.SendKeys]::SendWait("%{F4}")

【参考】
SendKeys メソッド


以上