前回、「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を使った実装については、今後必要に応じて取り上げていく。

デスクトップのスクリーンショットも取れるようにする

この記事は
Members+会員限定記事です。

ログイン/会員登録する