【サマリ】
・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 メソッド
以上