greeenn
Goto Top

Screenshot tool mit Powershell oder einer .exe

Hi,

ich bräuchte ein Skript oder eine .exe die einen Screenshot vom aktuellen Bildschirm macht.

Der Screenshot soll anschließend mit einer fortlaufenden Nummer in einem Ordner abgespeichert werden.

Ich hatte zuerst an eine Anwendung mit PowerShell gedacht. Diese sollte dann über eine Batch gestartet werden mit dem "-WindowStyle Hidden" Parameter.

Leider klappt das nicht so ganz.


Hat jemand vielleicht schon so eine Lösung gebaut oder weiß wie ich das am besten umsetzen kann?


Vielen Dank voraus!

Content-ID: 629334

Url: https://administrator.de/contentid/629334

Ausgedruckt am: 23.11.2024 um 17:11 Uhr

BirdyB
BirdyB 08.12.2020 um 09:52:00 Uhr
Goto Top
Moin,

wie wäre es mit greenshot? Dort kannst du das automatische Speichern mit Nummerierung einstellen.

VG
146707
146707 08.12.2020 aktualisiert um 11:55:01 Uhr
Goto Top
Leider klappt das nicht so ganz.
Klar jeht dat ...Pillepalle
# folder to store screenshots in
$folder = "$env:Userprofile\Desktop"  
Add-Type -A System.Drawing
Add-Type -A System.Windows.Forms
Add-Type –memberDefinition '[DllImport("user32.dll")]public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);' -name Win -namespace W32  
# Hide PS window
[W32.Win]::ShowWindow((Get-Process -id $pid).MainWindowHandle, 0) 
# get screen size
$w = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Width
$h = [System.Windows.Forms.SystemInformation]::PrimaryMonitorSize.Height
# create bitmap with screensize
$bm = New-Object System.Drawing.Bitmap $w,$h
# capture Desktop
[System.Drawing.Graphics]::FromImage($bm).CopyFromScreen(0,0,0,0,"$w,$h")  
# save as JPEG and dispose image object
$jpgQuality = 90
$encParams = New-Object System.Drawing.Imaging.EncoderParameters(1)
$encParams.Param = New-Object System.Drawing.Imaging.EncoderParameter ([System.Drawing.Imaging.Encoder]::Quality, $jpgQuality)
$encFormat = [System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() | ?{$_.MimeType -eq 'image/jpeg'}  
$bm.Save((join-path $folder "$(get-date -f yyyyMMdd_HHmmss).jpg"),$encFormat,$encParams)  
$bm.Dispose(); $encParams.Dispose()
Gruß p.
GreeeNn
GreeeNn 08.12.2020 um 11:47:00 Uhr
Goto Top
Hi,

das sieht doch schon ganz Gut aus!

Den Pfad hab ich durch meinen Pfad ersetzt.

Leider kommen bei mir noch folgende Fehler.


+ [W32.Win]::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0)
+                                              ~
Unerwartetes Token ")" in Ausdruck oder Anweisung.  
+ [W32.Win]::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0)
+                                                                ~
Argument in der Parameterliste fehlt.
+ [W32.Win]::ShowWindow((Get-Process –id $pid).MainWindowHandle, 0)
+                                                                   ~
Unerwartetes Token ")" in Ausdruck oder Anweisung.  
    + CategoryInfo          : ParserError: (:) , ParseException
    + FullyQualifiedErrorId : UnexpectedToken
146707
146707 08.12.2020 aktualisiert um 11:57:42 Uhr
Goto Top
–id
Copy N Paste Problem beim Kopieren .... sieht man am Bindestrich den es bei dir verhunzt hat face-wink. Gedankenstrich statt Bindestrich im falschen Encoding.
GreeeNn
GreeeNn 08.12.2020 um 12:16:58 Uhr
Goto Top
Ah stimmt!

Sorry das hier ein Problem nach dem anderen kommt, aber hier noch ein weiterer Fehler.


+ ...  $folder "$(get-date -f yyyyMMdd_HHmmss).jpg"),$encFormat,$encParams)  
+                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~
Die Zeichenfolge hat kein Abschlusszeichen: ".  
    + CategoryInfo          : ParserError: (:) , ParseException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
146707
146707 08.12.2020 aktualisiert um 12:29:14 Uhr
Goto Top
Kopier es endlich richtig und stell das Encoding des Skripts richtig ein, funktioniert nämlich problemlos, getestet! Das Problem liegt auf deiner Seite. Oder versuch einfach mal das Skript selbst zu verstehen dann hat der Thread auch einen Lerneffekt.
Ich bin raus. Tschö und viel Spaß.
GreeeNn
GreeeNn 08.12.2020 um 14:54:38 Uhr
Goto Top
Danke nochmal!

Es klappt jetzt alles so wie es sollte!