「作業手順書のために、大量のスクリーンショットが必要…」
「定期的に画面の状態を記録したい」
「ゲームプレイや操作画面を連続でキャプチャしたい」
手動でスクリーンショットを撮り続けるのって、本当に大変ですよね。
実は、Windowsではスクリーンショットを自動化することができるんです!
定期的な自動撮影から、マウスクリック時の自動キャプチャ、さらには特定の条件での撮影まで、様々な自動化が可能です。
今回は、無料ツールからPowerShellを使った高度な方法まで、スクリーンショット自動化のすべてを解説します。
この記事を読めば、もう手動でポチポチとスクショを撮る必要はなくなりますよ!
スクリーンショット自動化でできること

自動化の種類と活用シーン
定期的な自動撮影
📸 活用例
- 監視カメラ的な使い方
- 作業記録の自動化
- プレゼン資料の作成
- システムの状態監視
イベントトリガー撮影
🎯 活用例
- エラー発生時の自動記録
- 特定のアプリ起動時
- マウスクリック時
- キーボード操作時
連続撮影(タイムラプス)
🎬 活用例
- 操作手順の記録
- ゲームプレイの記録
- デザイン作業の過程
- 長時間作業の記録
自動化のメリット
作業効率が劇的に向上
- 手動撮影の手間がゼロ
- 撮り忘れがなくなる
- 同じタイミングで確実に撮影
- 他の作業に集中できる
方法1:無料ツールで簡単自動化
AutoScreenCapture(完全無料)
特徴
- シンプルで使いやすい
- 軽量で低負荷
- ポータブル版あり
設定方法
- ダウンロードとインストール
- 公式サイトからダウンロード
- インストール不要のポータブル版も選択可
- 基本設定
撮影間隔:1秒〜24時間で設定可能
保存形式:PNG、JPG、BMP
保存先:任意のフォルダを指定
ファイル名:日時を自動付与
- 詳細設定
- 特定の時間帯のみ撮影
- 画面に変化があった時のみ保存
- マルチモニター対応
Greenshot(高機能・無料)
特徴
- 編集機能付き
- ホットキーカスタマイズ
- 自動保存設定が豊富
自動化設定
- キャプチャ後の動作を自動化
- 設定 → 出力 → 保存先
- ファイル名パターンを設定
- 自動的に指定フォルダに保存
- ホットキーで効率化
Print Screen:全画面
Alt + Print Screen:アクティブウィンドウ
Ctrl + Print Screen:範囲選択
ShareX(最強の無料ツール)
特徴
- 超高機能
- タスク自動化機能
- アップロード連携
自動撮影の設定
- 自動キャプチャタスク作成
ホットキー設定 → 自動キャプチャ
間隔:100ms〜1日
領域:全画面/ウィンドウ/指定範囲
条件:時間帯/曜日指定可能
- ワークフローの設定
- キャプチャ → リサイズ → 保存
- 透かし追加も自動化可能
- FTPアップロードまで自動化
方法2:Windows標準機能を活用
ゲームバーで連続撮影
Windows 10/11の隠れた機能
- ゲームバーを有効化
- 設定 → ゲーム → ゲームバー
- 「ゲームバーを有効にする」をオン
- スクリーンショット設定
- Win + G でゲームバー起動
- 設定アイコン → キャプチャ
- 保存先フォルダを指定
- 連続撮影のコツ
- Win + Alt + Print Screen で撮影
- AutoHotkeyと組み合わせて自動化
ステップ記録ツール(PSR)
操作手順を自動記録
- 起動方法
Win + R → psr.exe
または
「ステップ記録ツール」で検索
- 記録開始
- 「記録の開始」をクリック
- 操作するたびに自動でスクショ
- コメント追加も可能
- 保存形式
- ZIPファイルで保存
- HTMLレポート形式
- 画像付きの詳細な手順書に
Snipping Tool のタイマー機能
遅延撮影で擬似自動化
- Snipping Tool を起動
- Win + Shift + S の設定画面から
- 遅延設定
- 「遅延」ボタン
- 3秒または5秒を選択
- 活用方法
- メニュー表示中の撮影
- ドロップダウンリストの撮影
- ホバー状態の撮影
方法3:PowerShellで高度な自動化

基本的な自動撮影スクリプト
5秒ごとに自動撮影するスクリプト
# スクリーンショット自動化スクリプト
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# 保存先フォルダ
$savePath = "C:\Screenshots"
if (!(Test-Path $savePath)) {
New-Item -ItemType Directory -Path $savePath
}
# 撮影間隔(秒)
$interval = 5
# 撮影回数
$maxShots = 10
for ($i = 1; $i -le $maxShots; $i++) {
# スクリーンサイズ取得
$bounds = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
$bitmap = New-Object System.Drawing.Bitmap($bounds.Width, $bounds.Height)
$graphics = [System.Drawing.Graphics]::FromImage($bitmap)
# スクリーンショット撮影
$graphics.CopyFromScreen($bounds.Location, [System.Drawing.Point]::Empty, $bounds.Size)
# ファイル名(日時付き)
$fileName = "screenshot_$(Get-Date -Format 'yyyyMMdd_HHmmss').png"
$filePath = Join-Path $savePath $fileName
# 保存
$bitmap.Save($filePath, [System.Drawing.Imaging.ImageFormat]::Png)
# クリーンアップ
$graphics.Dispose()
$bitmap.Dispose()
Write-Host "撮影完了: $fileName"
# 待機
Start-Sleep -Seconds $interval
}
画面変化を検知して撮影
変化があった時だけ保存
# 前回の画像と比較して変化があれば保存
$lastHash = ""
while ($true) {
# スクリーンショット撮影
$bounds = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
$bitmap = New-Object System.Drawing.Bitmap($bounds.Width, $bounds.Height)
$graphics = [System.Drawing.Graphics]::FromImage($bitmap)
$graphics.CopyFromScreen($bounds.Location, [System.Drawing.Point]::Empty, $bounds.Size)
# ハッシュ値計算
$stream = New-Object System.IO.MemoryStream
$bitmap.Save($stream, [System.Drawing.Imaging.ImageFormat]::Png)
$bytes = $stream.ToArray()
$hash = [System.BitConverter]::ToString(
[System.Security.Cryptography.SHA256]::Create().ComputeHash($bytes)
)
# 変化があれば保存
if ($hash -ne $lastHash) {
$fileName = "change_$(Get-Date -Format 'yyyyMMdd_HHmmss').png"
$bitmap.Save((Join-Path $savePath $fileName))
Write-Host "変化を検知: $fileName"
$lastHash = $hash
}
# クリーンアップ
$stream.Dispose()
$graphics.Dispose()
$bitmap.Dispose()
Start-Sleep -Seconds 1
}
特定ウィンドウのみ撮影
アクティブウィンドウを自動撮影
# アクティブウィンドウのみキャプチャ
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
}
public struct RECT {
public int Left, Top, Right, Bottom;
}
"@
# アクティブウィンドウの範囲取得
$hwnd = [Win32]::GetForegroundWindow()
$rect = New-Object RECT
[Win32]::GetWindowRect($hwnd, [ref]$rect)
# 範囲を指定して撮影
$width = $rect.Right - $rect.Left
$height = $rect.Bottom - $rect.Top
$bitmap = New-Object System.Drawing.Bitmap($width, $height)
$graphics = [System.Drawing.Graphics]::FromImage($bitmap)
$graphics.CopyFromScreen($rect.Left, $rect.Top, 0, 0,
[System.Drawing.Size]::new($width, $height))
# 保存処理...
方法4:タスクスケジューラで完全自動化
タスクの作成手順
定期実行の設定
- タスクスケジューラを開く
- Win + R → taskschd.msc
- 基本タスクの作成
操作 → 基本タスクの作成
名前:スクリーンショット自動撮影
説明:1時間ごとに画面を撮影
- トリガーの設定
- 毎日
- 開始時刻:9:00
- 間隔:1時間ごと
- 操作の設定
- プログラムの開始
- プログラム:powershell.exe
- 引数:-File “C:\Scripts\screenshot.ps1”
条件付き実行
特定の条件で撮影
CPU使用率が高い時
条件タブ:
- コンピューターをAC電源で動作している場合のみ
- ネットワーク接続時のみ
特定のプログラム実行時
トリガー:イベント時
- ログ:アプリケーション
- ソース:特定のアプリ
方法5:バッチファイルで簡単自動化
NirCmdを使った自動化
セットアップ
- NirCmd をダウンロード
- NirSoft公式サイトから
- nircmd.exe を C:\Tools に配置
- バッチファイル作成
@echo off
set SCREENSHOT_DIR=C:\Screenshots
set INTERVAL=5
:LOOP
nircmd.exe savescreenshot "%SCREENSHOT_DIR%\screen_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.png"
timeout /t %INTERVAL% /nobreak >nul
goto LOOP
連続撮影バッチ
指定回数だけ撮影
@echo off
setlocal enabledelayedexpansion
set COUNT=10
set INTERVAL=3
set SAVE_DIR=C:\Screenshots
for /l %%i in (1,1,%COUNT%) do (
set FILENAME=shot_%%i_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.png
nircmd.exe savescreenshot "%SAVE_DIR%\!FILENAME!"
echo 撮影 %%i / %COUNT% 完了
if %%i lss %COUNT% timeout /t %INTERVAL% /nobreak >nul
)
echo 全ての撮影が完了しました
pause
実用的な活用例
マニュアル作成の自動化
操作手順書を効率的に作成
- AutoHotkeyスクリプト
; F9キーで撮影開始/停止
F9::
capturing := !capturing
if (capturing) {
SetTimer, CaptureScreen, 2000 ; 2秒ごと
MsgBox, 撮影開始
} else {
SetTimer, CaptureScreen, Off
MsgBox, 撮影停止
}
return
CaptureScreen:
FormatTime, timestamp, , yyyyMMdd_HHmmss
Run, nircmd.exe savescreenshot "C:\Manual\step_%timestamp%.png"
return
監視システムの構築
画面監視と異常検知
- 監視対象の設定
- エラーダイアログの出現
- 特定の色の変化
- テキストの出現
- アラート機能
- メール通知
- LINE通知
- 音声アラート
プレゼン資料の自動作成
スライドショーを画像化
# PowerPointスライドを自動キャプチャ
$ppt = New-Object -ComObject PowerPoint.Application
$presentation = $ppt.Presentations.Open("C:\presentation.pptx")
$presentation.SlideShowSettings.Run()
foreach ($slide in $presentation.Slides) {
$slide.Select()
Start-Sleep -Seconds 2
# スクリーンショット撮影処理
}
トラブルシューティング

よくある問題と解決法
撮影されない
原因と対策:
- 権限不足 → 管理者として実行
- パスの誤り → 絶対パスで指定
- セキュリティソフト → 例外設定に追加
画質が悪い
対策:
- PNG形式で保存
- DPI設定を確認
- 圧縮率を調整
容量が大きすぎる
対策:
- JPG形式に変更
- 定期的に古いファイルを削除
- 変化検知で重複を防ぐ
パフォーマンスの最適化
CPU負荷を下げる方法
- 撮影間隔を調整
- 最小限の頻度に設定
- 必要な時間帯のみ実行
- 画像サイズを最適化
- 必要な範囲のみキャプチャ
- 解像度を下げる
- バックグラウンド実行
- 優先度を下げる
- スリープ時は停止
セキュリティとプライバシー
注意すべきポイント
個人情報の取り扱い
⚠️ 注意事項
- パスワード入力画面は撮影しない
- 個人情報が映る可能性を考慮
- 共有PCでは使用に注意
保存先の管理
🔒 セキュリティ対策
- アクセス権限を設定
- 暗号化フォルダに保存
- 定期的な削除ルール
法的な配慮
職場での利用
- 会社のポリシーを確認
- 監視目的の場合は通知が必要
- 記録の保管期間を設定
おすすめツール比較表
ツール | 無料 | 自動化 | 編集機能 | 難易度 | おすすめ用途 |
---|---|---|---|---|---|
AutoScreenCapture | ◯ | ◎ | × | 簡単 | 定期監視 |
Greenshot | ◯ | ○ | ◎ | 簡単 | 手順書作成 |
ShareX | ◯ | ◎ | ◎ | 中級 | 高度な自動化 |
ステップ記録ツール | ◯ | ○ | × | 簡単 | 操作記録 |
PowerShell | ◯ | ◎ | × | 上級 | カスタム処理 |
よくある質問
Q1. 大量の画像をどう管理する?
A. 自動整理スクリプトを活用しましょう。
# 日付ごとにフォルダ分け
Get-ChildItem "C:\Screenshots\*.png" |
ForEach-Object {
$date = $_.CreationTime.ToString("yyyy-MM-dd")
$folder = "C:\Screenshots\$date"
if (!(Test-Path $folder)) {
New-Item -ItemType Directory -Path $folder
}
Move-Item $_.FullName -Destination $folder
}
Q2. 動画にする方法は?
A. FFmpegで連番画像を動画化できます。
ffmpeg -framerate 10 -i screenshot_%d.png -c:v libx264 output.mp4
Q3. クラウドに自動保存したい
A. OneDriveフォルダを保存先に指定するか、rcloneを使用。
Q4. マルチモニター環境では?
A. ShareXやPowerShellで全画面または個別指定が可能です。
まとめ:スクリーンショット自動化で作業革命!
今回はWindowsでのスクリーンショット自動化について詳しく解説しました。
押さえておきたいポイント
📌 自動化の方法
- 無料ツール(簡単・高機能)
- Windows標準機能(追加不要)
- PowerShell(カスタマイズ自在)
- タスクスケジューラ(完全自動)
- バッチファイル(シンプル)
📌 おすすめツール
- 初心者:AutoScreenCapture
- 中級者:ShareX
- 上級者:PowerShell
📌 活用シーン
- マニュアル作成
- 監視システム
- 作業記録
- プレゼン資料作成
📌 自動化のコツ
- 適切な撮影間隔
- 保存形式の選択
- ファイル管理の自動化
- セキュリティへの配慮
📌 トラブル対策
- 権限設定の確認
- パスの正確な指定
- 定期的なメンテナンス
スクリーンショットの自動化は、一度設定すれば大幅な時間短縮になります。
手動での繰り返し作業から解放され、もっと創造的な仕事に時間を使えるようになるはずです。
まずは簡単なツールから始めて、徐々に高度な自動化にチャレンジしてみてください!
コメント