КАК изменить код, чтобы делать снимок экрана с именем файла “powerSmell” каждые 5 секунд в течение 2 часов? [закрыто]

Вопрос или проблема

Add-Type -AssemblyName System.Windows.Forms
Add-type -AssemblyName System.Drawing
$FolderName = Read-Host "poweSmell: "
$time = Read-Host "5(секунды): "
# Получить информацию о разрешении экрана
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top
$bitmap = New-Object System.Drawing.Bitmap $Width, $Height

$Path = "C:\Users\$env:UserName\Desktop\"
New-Item -Path $Path -Name $FolderName -ItemType "directory"

for($i = 1; $i -le 7200; $i++) {
    $FileName = "$FolderName-$i.bmp";
    $FIle = "$Path$FolderName\$FileName"

    $graphics = [System.Drawing.Graphics]::FromImage($bitmap)
    $graphics.CopyFromScreen($Left,$Top,0,0,$bitmap.Size)
    $bitmap.Save($File)

# Установить продолжительность и интервал
$duration = 2 * 60 * 60 # 2 часа в секундах
$interval = 5 # 5 секунд
    Write-Output "Скриншот сохранен по адресу: $File"
    Start-Sleep -Seconds $time

}

Ответ или решение

В данном руководстве мы рассмотрим, как изменить код PowerShell так, чтобы он выполнял снимок экрана с именем файла "powerSmell" каждые 5 секунд в течение 2 часов. Это будет полезно для пользователей, которым необходимо фиксировать экран для мониторинга или проведения анализа. Мы подробно разберем каждый шаг и обеспечим работоспособность кода.

Изучение исходного кода

Исходный код, предоставленный в вашем вопросе, имеет несколько недостатков и ошибок. Основные из них:

  1. Опечатка в System.Windows.Forms.SytemInformation; должно быть System.Windows.Forms.SystemInformation.
  2. Неправильное использование переменных, таких как $FolderName, которое используется как каталог, но также используется как имя файла.
  3. Логика цикла и настройки времени не совсем корректно реализованы.

Исправленный код

Теперь я представлю откорректированный вариант кода.

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

# Имя папки для сохранения снимков экрана
$FolderName = "powerSmell"
# Путь для сохранения
$Path = "C:\Users\$env:UserName\Desktop\$FolderName"
# Проверка, существует ли папка, если нет - создать
if (-not (Test-Path -Path $Path)) {
    New-Item -Path $Path -ItemType "directory"
}

# Получение информации о разрешении экрана
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top

# Создание объекта Bitmap для захвата экрана
$bitmap = New-Object System.Drawing.Bitmap $Width, $Height

# Установка продолжительности и интервала
$duration = 2 * 60 * 60  # 2 часа в секундах
$interval = 5  # интервал в секундах
$iterations = $duration / $interval

for ($i = 1; $i -le $iterations; $i++) {
    $FileName = "$FolderName-$i.bmp"
    $FilePath = Join-Path -Path $Path -ChildPath $FileName

    # Создание графики для захвата экрана
    $graphics = [System.Drawing.Graphics]::FromImage($bitmap)
    $graphics.CopyFromScreen($Left, $Top, 0, 0, $bitmap.Size)
    $bitmap.Save($FilePath, [System.Drawing.Imaging.ImageFormat]::Bmp)

    # Уведомление о сохранении
    Write-Output "Скриншот сохранен в: $FilePath"
    Start-Sleep -Seconds $interval
}

# Освобождение ресурсов
$graphics.Dispose()
$bitmap.Dispose()

Объяснение изменений

  1. Создание директории: Программа автоматически создает папку "powerSmell" на рабочем столе, если она не существует.
  2. Правильная работа с разрешением экрана: Исправлены опечатки, и теперь код корректно получает размеры экрана.
  3. Цикл для создания снимков: Цикл выполняется необходимое количество раз исходя из продолжительности работы в секундах и интервала.
  4. Устранены опечатки: Исправлены имена переменных и их использование для избежания ошибок.

Заключение

Такой подход к созданию скрипта позволит вам автоматизировать процесс создания снимков экрана каждые 5 секунд в течение 2 часов. Убедитесь, что у вас установлены необходимые права доступа для выполнения этих операций на вашем компьютере. Используйте данный код с осторожностью и только для законных целей.

Этот код может быть адаптирован под другие нужды, добавляя различные функции, такие как изменение формата файла или улучшение обработки ошибок.

Оцените материал
Добавить комментарий

Капча загружается...