Powershell - Simulieren Sie Windows-D, um den Bildschirm zu löschen und wiederherzustellen

Powershell - Simulieren Sie Windows-D, um den Bildschirm zu löschen und wiederherzustellen

Ich habe eine Anfrage, einen Screenshot der Desktopsymbole von Benutzern zu erhalten. Ich kann Powershell zum Aufnehmen verwenden, muss aber zuerst den Bildschirm löschen, den Screenshot machen und dann den Bildschirm wiederherstellen. Die Tastenkombination „Windows+D“ reicht aus, aber die Windows-Taste ist in Powershell keine Option zum Simulieren. Gibt es eine andere Möglichkeit, einen Screenshot des Desktops aufzunehmen?

Vielen Dank!

Antwort1

hier ist eine Lösung, die auch Screenshots macht. Ich verwende sie in meinen Skripten, wenn ich Screenshots von etwas machen muss. Warum nur Teile der Aufgabe automatisieren, wenn man auch alles automatisieren kann ;-), richtig?

# Take Screenshot function - reads width and height from WMI, saves in outfile path
function Take-Screenshot([string]$outfile) 
{
    [int]$PrtScrnWidth = (gwmi Win32_VideoController).CurrentHorizontalResolution
    [int]$PrtScrnHeight = (gwmi Win32_VideoController).CurrentVerticalResolution
    $bounds = [Drawing.Rectangle]::FromLTRB(0, 0, $PrtScrnWidth, $PrtScrnHeight)
    $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($outfile)
    $graphics.Dispose()
    $bmp.Dispose()
}

# Minimize all the Windows
$shell = New-Object -ComObject "Shell.Application"
$shell.minimizeall()

#sleep to make sure not to screenshot while everything is still minimizing
sleep -s 2

# Take the Screenshot - choose your outfile path
Take-Screenshot -outfile C:\Batch\test4.png

# get your screen back
$shell.undominimizeall()

Antwort2

Es gibt BeispielHier.

Ich bin beim Erkunden des Shell.application-Com-Objekts auf diesen kleinen Tipp gestoßen. Es hat andere nützliche Funktionen wie Undominimizeall, kaskadierende Fenster und viele andere Explorer-Funktionen.

$shell = New-Object -ComObject "Shell.Application"
$shell.minimizeall()

Sie können das Minimieren aller Fenster auch mit dem folgenden Code rückgängig machen.

$shell = New-Object -ComObject "Shell.Application"
$shell.undominimizeall()

verwandte Informationen