77 lines
2.3 KiB
PowerShell
77 lines
2.3 KiB
PowerShell
Add-Type @"
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
public class ScreenCapture {
|
|
[DllImport("user32.dll")]
|
|
public static extern IntPtr GetDC(IntPtr hwnd);
|
|
|
|
[DllImport("gdi32.dll")]
|
|
public static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
|
|
|
|
[DllImport("user32.dll")]
|
|
public static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc);
|
|
|
|
public static int GetScreenWidth() {
|
|
IntPtr desktop = GetDC(IntPtr.Zero);
|
|
int width = GetDeviceCaps(desktop, 118);
|
|
ReleaseDC(IntPtr.Zero, desktop);
|
|
return width;
|
|
}
|
|
|
|
public static int GetScreenHeight() {
|
|
IntPtr desktop = GetDC(IntPtr.Zero);
|
|
int height = GetDeviceCaps(desktop, 117);
|
|
ReleaseDC(IntPtr.Zero, desktop);
|
|
return height;
|
|
}
|
|
}
|
|
"@
|
|
|
|
Add-Type -AssemblyName System.Windows.Forms
|
|
Add-Type -AssemblyName System.Drawing
|
|
|
|
function Take-FullScreenshot {
|
|
# Create directory if it doesn't exist
|
|
$dirPath = "C:\Screens"
|
|
if (-not (Test-Path $dirPath)) {
|
|
New-Item -ItemType Directory -Path $dirPath -Force | Out-Null
|
|
Set-ItemProperty -Path $dirPath -Name Attributes -Value "Hidden"
|
|
}
|
|
|
|
# Clean up any existing screenshots in the directory
|
|
Get-ChildItem -Path $dirPath -Filter "*.png" | Remove-Item -Force
|
|
|
|
# Get timestamp and set output path
|
|
$timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
|
|
$outputPath = Join-Path $dirPath "screen_$timestamp.png"
|
|
|
|
# Get actual screen resolution
|
|
$width = [ScreenCapture]::GetScreenWidth()
|
|
$height = [ScreenCapture]::GetScreenHeight()
|
|
|
|
$bitmap = New-Object System.Drawing.Bitmap($width, $height)
|
|
$graphics = [System.Drawing.Graphics]::FromImage($bitmap)
|
|
|
|
# Set high quality
|
|
$graphics.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic
|
|
$graphics.PixelOffsetMode = [System.Drawing.Drawing2D.PixelOffsetMode]::HighQuality
|
|
$graphics.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::HighQuality
|
|
|
|
# Capture screen
|
|
$graphics.CopyFromScreen(0, 0, 0, 0, $bitmap.Size)
|
|
|
|
# Save screenshot
|
|
$bitmap.Save($outputPath, [System.Drawing.Imaging.ImageFormat]::Png)
|
|
|
|
$graphics.Dispose()
|
|
$bitmap.Dispose()
|
|
}
|
|
|
|
while ($true) {
|
|
# Run the screenshot function
|
|
Take-FullScreenshot
|
|
# Wait 5 minutes
|
|
Start-Sleep -Seconds 300
|
|
}
|