前回、「getss.ps1」で取得するスクリーンショットのサイズを指定できるようにした。今回はこのスクリプトの構造を拡張していく。具体的には、Webブラウザで取得するスクリーンショットに加え、デスクトップやアプリケーションそのもののスクリーンショットを取得する機能を取り込むようにし、内部の構造を整える。
前回の成果物
前回は、Microsoft Edgeのヘッドレスモードでスクリーンショットを取得する際に、画像のサイズを指定できるようにPowerShellスクリプト「getss.ps1」を書き換えた。成果物は次の通りだ。
#!/usr/bin/env pwsh
#========================================================================
# スクリーンショットを取得する
#========================================================================
#========================================================================
# 引数を処理
# -URL url WebリソースのURL
# -Width width スクリーンショットの幅
# -Height height スクリーンショットの高さ
#========================================================================
Param(
[Parameter(Mandatory=$true)][String]$URL = "",
[Int]$Width = 1200,
[Int]$Height = 800
)
#========================================================================
# デフォルトのスクリーンショットファイル
#========================================================================
$outfile="${env:HOME}/ss.png"
#========================================================================
# スクリーンショットの取得に利用するアプリケーション
#========================================================================
$msedge='C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
#========================================================================
# どの方法でスクリーンショットを取得するかを判断
#========================================================================
$method='msedge'
#========================================================================
# Webページのスクリーンショットを取得
#========================================================================
switch ($method)
{
#================================================================
# Microsoft Edgeを使って取得
#================================================================
'msedge'
{
$o1='--headless'
$o2='--screenshot="' + ${outfile} + '"'
$o3="--window-size=${Width},${Height}"
Start-Process -FilePath $msedge `
-ArgumentList $o1,$o2,$o3,$URL `
-Wait
break
}
}
getss.ps1には、Webページのスクリーンショットだけでなく、デスクトップやアプリケーションのスクリーンショットを取得する機能も持たせたいと思う。今回はこうした機能を取り込むための書き換えを行っていく。
まずは「Snipping Tool (SnippingTool.exe)」を使う
デスクトップやアプリケーションのスクリーンショットを取る機能は、PowerShellだけで実装することができる。Windowsがそうした機能を提供しているので、PowerShellからはそれらのAPIを呼び出して利用するコードを書けばよい。
ただし、その作業は結構な複雑なものになるので、今ここで取り上げるのはあまり適切ではないだろう。これに関しては、別の機会に説明したい。
今回は、Windowsがデフォルトで提供しているスクリーンショットを取得するアプリケーション「Snipping Tool (SnippingTool.exe)」を起動する処理を入れる、という程度の書き換えに留めておきたい。PowerShellを使った実装については、今後必要に応じて取り上げていく。