Wie macht man am besten einen Screenshot mit Batch/Powershell/Vbs/...?
Ich hab schon selbst im Internet geschaut, allerdings nicht richtig gefunden, da es nicht funktioniert hatte oder man irgendwelche Sachen vorher installieren musste. Ich brauche ein Script das vom ganzen Bildschirm, mit Maus, Desktop und offenen Fenstern ein Bild macht und das dann in einem bestimmten Ordner mit einem bestimmten Namen gespeichert wird. Am besten wäre das mit Batch, geht natürlich auch über Powershell, aber dann bitte vlt mit Überführung dass der Code der Powershell in einer Batch ist? Geht das?
Dankeschön!
2 Antworten
mit VBS kann man Tasten drücken. Dann kann man dann einen Screenshot machen
außerdem blinckt dann der bildschirm kurz auf, was ich auch nicht will
ja aber man kann den nicht unter einem bestimmten namen in einem bestimmten ordner speichern
erstmal Quick &Dirty ohne große Erklärung (mein Mopie muß Gassi)
<# : batch portion
@echo off
rem Bildname !ohne Endung! (in dieser kleinen Schmutzigen Variante nur PNGformat)
set "pictureFile=MyScrShot"
(for %%I in ("%~f0";"%pictureFile%.png";) do @echo:%%~I)|powershell -windowstyle hidden -noprofile "[Array]$argv = $input|?{$_}; iex (${%~f0}| out-string)"
exit /b
: end batch / begin powershell #>
[Reflection.Assembly]::LoadWithPartialName("System.Drawing")
function screenshot([Drawing.Rectangle]$bounds, $path) {
$Bitmap = New-Object Drawing.Bitmap $bounds.width, $bounds.height
$Screen = [Drawing.Graphics]::FromImage($Bitmap)
$Screen.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size)
$Bitmap.Save($path)
$Screen.Dispose()
$Bitmap.Dispose()
}
Get-WmiObject -Class Win32_VideoController|%{
$ScreenWidth=$_.CurrentHorizontalResolution
$ScreenHeight=$_.CurrentVerticalResolution
}
$bounds = [Drawing.Rectangle]::FromLTRB(0, 0, $ScreenWidth,$ScreenHeight)
screenshot $bounds $argv[1]