Skip to content

Screenshots

Skippy's PowerShell toolkit includes advanced screenshot capabilities for multi-monitor setups, with automatic scaling to meet AI vision model requirements.


Quick Commands

# Import the toolkit
Import-Module C:\Users\ejb71\SkippyBuddy\tools\skippy-tools.ps1

# Primary monitor (default)
Take-Screenshot

# All monitors
Take-Screenshot -AllMonitors

# Specific monitor
Take-Screenshot -Monitor Left
Take-Screenshot -Monitor Right

# Custom scale
Take-Screenshot -Scale 0.5

Screenshot Functions

Take-Screenshot

Capture the primary monitor or specific monitor.

Take-Screenshot [-Scale <0.1-1.0>] [-Path <string>] [-AllMonitors] [-Monitor <name>]

Parameters:

Parameter Description Default
-Scale Scale factor (0.1 to 1.0) 0.4 (all), 0.5 (single)
-Path Output file path temp/screenshot_<timestamp>.png
-AllMonitors Capture entire virtual screen false
-Monitor Specific monitor name (primary)

Examples:

# Basic screenshot
Take-Screenshot

# Half-size screenshot
Take-Screenshot -Scale 0.5

# All monitors at 30% scale
Take-Screenshot -AllMonitors -Scale 0.3

# Left monitor only
Take-Screenshot -Monitor Left -Scale 0.6

# Custom output path
Take-Screenshot -Path "C:\Screenshots\capture.png"

Output:

Path              : C:\Users\ejb71\SkippyBuddy\temp\screenshot_20260131_143022.png
LatestPath        : C:\Users\ejb71\SkippyBuddy\temp\latest_screenshot.png
Size              : 245 KB
Resolution        : 1024x576
Timestamp         : 2026-01-31 14:30:22

Take-ScreenshotAllMonitors

Capture the entire virtual screen (all monitors combined).

Take-ScreenshotAllMonitors [-Scale <0.1-1.0>] [-Path <string>]

Output Includes:

Path                  : temp/screenshot_all_20260131_143022.png
LatestPath            : temp/latest_screenshot_all.png
Size                  : 456 KB
SizeMB                : 0.45
OriginalResolution    : 5120x1440
ScaledResolution      : 2048x576
VirtualScreenOrigin   : (-2560, 0)
Warning               : (if > 2MB)

File Size Limit

WhatsApp has a 2MB image limit. If the screenshot exceeds this, you'll see a warning. Reduce scale factor.


Take-ScreenshotMonitor

Capture a specific monitor by name or number.

Take-ScreenshotMonitor -Monitor <name> [-Scale <0.1-1.0>] [-Path <string>]

Monitor Names:

Name Description Position
Left or Secondary or 2 Left monitor (DISPLAY2) (-2560, 0)
Right or Primary or 1 Right monitor (DISPLAY1) (0, 0)

Example:

# Capture left monitor
Take-ScreenshotMonitor -Monitor Left

# Capture right (primary) at 60% scale
Take-ScreenshotMonitor -Monitor Right -Scale 0.6

Get-MonitorInfo

Get detailed information about connected monitors.

Get-MonitorInfo

Output:

VirtualScreen : @{Position=(-2560, 0); Size=5120x1440; Left=-2560; Top=0; Right=2560; Bottom=1440}
MonitorCount  : 2
Monitors      : {
    @{DeviceName=\\.\DISPLAY2; Primary=False; Position=(-2560, 0); Resolution=2560x1440}
    @{DeviceName=\\.\DISPLAY1; Primary=True; Position=(0, 0); Resolution=2560x1440}
}

Get-ScreenInfo

Simple screen information listing.

Get-ScreenInfo

Output:

DeviceName   Primary Resolution  WorkingArea
----------   ------- ----------  -----------
\\.\DISPLAY2 False   2560x1440   2560x1400
\\.\DISPLAY1 True    2560x1440   2560x1400

Multi-Monitor Setup

Your Configuration

┌─────────────────┬─────────────────┐
│                 │                 │
│   Left/DISPLAY2 │  Right/DISPLAY1 │
│   (-2560, 0)    │   (0, 0)        │
│   2560x1440     │  2560x1440      │
│   Secondary     │   Primary       │
│                 │                 │
└─────────────────┴─────────────────┘
        Virtual Screen: 5120x1440

Virtual Screen

Windows combines all monitors into a "virtual screen":

  • Origin: Top-left of leftmost monitor
  • Size: Total width × max height
  • Coordinates: Monitors left of primary have negative X

Scale Guidelines

For AI Vision

Vision models have size limits. Recommended scales:

Scenario Scale Approx Size
Single 2560x1440 0.5 1280x720, ~300KB
Single 2560x1440 0.4 1024x576, ~200KB
Dual 5120x1440 0.3 1536x432, ~250KB
Dual 5120x1440 0.4 2048x576, ~400KB

For WhatsApp

Maximum 2MB. Use:

  • Single monitor: Scale 0.5 or less
  • All monitors: Scale 0.3 or less

For Maximum Detail

Use scale 1.0 but be aware of file sizes:

  • Single 2560x1440 at 100%: ~3-5MB
  • Dual monitors at 100%: ~8-12MB

File Locations

Output Files

Type Location
Timestamped temp/screenshot_<timestamp>.png
Latest single temp/latest_screenshot.png
Latest all temp/latest_screenshot_all.png
Latest left temp/latest_screenshot_left.png
Latest right temp/latest_screenshot_right.png

Temp Directory

C:\Users\ejb71\SkippyBuddy\temp\

Integration with Chat

Asking About Screenshots

You: Take a screenshot and tell me what's on my screen

Skippy: [Uses Take-Screenshot command, then analyzes image]

Manual Screenshot + Paste

  1. Take screenshot with Take-Screenshot
  2. Open the file
  3. Copy to clipboard
  4. Paste (Ctrl+V) into Skippy

Automatic Analysis

Screenshots saved to latest_screenshot.png can be referenced:

Skippy, look at temp/latest_screenshot.png and describe it

Troubleshooting

Black Screenshot

Cause: Some apps block screen capture

Fix:

  • Disable hardware acceleration in the app
  • Use -AllMonitors flag
  • Try different monitor

Wrong Monitor Captured

Cause: Monitor configuration mismatch

Fix:

# Check actual positions
Get-MonitorInfo

# Adjust monitor names in skippy-tools.ps1 if needed

File Too Large

Cause: Scale too high for multi-monitor

Fix:

  • Reduce scale: -Scale 0.3
  • Capture single monitor instead of all
  • Use JPEG instead (modify script)

Capture Fails Silently

Cause: Missing .NET assemblies

Fix:

# Manually add assembly
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

Advanced: Custom Scripts

Timed Screenshots

# Screenshot every 5 minutes
while ($true) {
    Take-Screenshot -AllMonitors -Scale 0.3
    Start-Sleep -Seconds 300
}

Screenshot with Notification

$result = Take-Screenshot
Send-Notification -Title "Screenshot" -Message "Saved: $($result.Path)"

Conditional Screenshot

# Only screenshot if specific app is running
if (Get-Process -Name "notepad" -ErrorAction SilentlyContinue) {
    Take-Screenshot -Monitor Primary
}