Este team redactor ha estado horas investigando para darle espuestas a tus preguntas, te ofrecemos la respuesta y nuestro deseo es serte de gran apoyo.
Solución:
También puede usar .NET para tomar la captura de pantalla programáticamente (lo que le brinda un control más preciso):
[Reflection.Assembly]::LoadWithPartialName("System.Drawing")
function screenshot([Drawing.Rectangle]$bounds, $path)
$bmp = New-Object Drawing.Bitmap $bounds.width, $bounds.height
$graphics = [Drawing.Graphics]::FromImage($bmp)
$graphics.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size)
$bmp.Save($path)
$graphics.Dispose()
$bmp.Dispose()
$bounds = [Drawing.Rectangle]::FromLTRB(0, 0, 1000, 900)
screenshot $bounds "C:screenshot.png"
Esta función de PowerShell capturará la pantalla en PowerShell y la guardará en un archivo numerado automáticamente. Si se usa el modificador -OfWindow, se capturará la ventana actual.
Esto funciona utilizando los trucos integrados PRINTSCREEN / CTRL-PRINTSCREEEN, y utiliza un codificador de mapa de bits para guardar el archivo en el disco.
function Get-ScreenCapture
param(
[Switch]$OfWindow
)
begin
Add-Type -AssemblyName System.Drawing
$jpegCodec = [Drawing.Imaging.ImageCodecInfo]::GetImageEncoders()
process
Start-Sleep -Milliseconds 250
if ($OfWindow)
[Windows.Forms.Sendkeys]::SendWait("%PrtSc")
else
[Windows.Forms.Sendkeys]::SendWait("PrtSc")
Start-Sleep -Milliseconds 250
$bitmap = [Windows.Forms.Clipboard]::GetImage()
$ep = New-Object Drawing.Imaging.EncoderParameters
$ep.Param[0] = New-Object Drawing.Imaging.EncoderParameter ([System.Drawing.Imaging.Encoder]::Quality, [long]100)
$screenCapturePathBase = "$pwdScreenCapture"
$c = 0
while (Test-Path "$screenCapturePathBase$c.jpg")
$c++
$bitmap.Save("$screenCapturePathBase$c.jpg", $jpegCodec, $ep)
Espero que esto ayude
En aras de la finalización, este script le permite tomar capturas de pantalla en varios monitores.
Base viene el codigo de Jeremy
[Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
function screenshot($path)
$width = 0;
$height = 0;
$workingAreaX = 0;
$workingAreaY = 0;
$screen = [System.Windows.Forms.Screen]::AllScreens;
foreach ($item in $screen)
if($workingAreaX -gt $item.WorkingArea.X)
$workingAreaX = $item.WorkingArea.X;
if($workingAreaY -gt $item.WorkingArea.Y)
$workingAreaY = $item.WorkingArea.Y;
$width = $width + $item.Bounds.Width;
if($item.Bounds.Height -gt $height)
$height = $item.Bounds.Height;
$bounds = [Drawing.Rectangle]::FromLTRB($workingAreaX, $workingAreaY, $width, $height);
$bmp = New-Object Drawing.Bitmap $width, $height;
$graphics = [Drawing.Graphics]::FromImage($bmp);
$graphics.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size);
$bmp.Save($path);
$graphics.Dispose();
$bmp.Dispose();
Se puede llamar con: captura de pantalla “D:screenshot.png”
Si posees alguna duda y forma de medrar nuestro ensayo puedes añadir una crónica y con mucho placer lo ojearemos.