Find-Color


Поиск цвета

Цвет в примере
R=53 G=121 B=185 / HEX= 3579b9

Параметры #1

  • -Color Искомый цвет

  • -Screen Искать цвет на всем экране

  • -Path Путь к файлу, в котором будет произведен поиск цвета

  • -Handle Указатель окна, в котором будет произведен поиск цвета

  • -Visible Поиск в неперекрытом окне

  • -Picture Картинка, загруженная в память, в которой будет произведен поиск цвета

  • -Deviation Отклонение в цвете (20 = 20% color deviation)

  • -Count Количество пикселей, которое будет найдено

    1 - по умолчанию
    0 - искать все

    Wake up, Neo, select all

    Find-Color "3579b9" -Screen

Параметры #2

  • -Color Искомый цвет

  • -Screen / -Path / -Handle / -Picture

  • -StartPos Координаты начала области поиска

  • -EndPos Координаты конца области поиска

  • -Deviation Отклонение в цвете (20 = 20% color deviation)

  • -Count Количество пикселей, которое будет найдено

    1 - по умолчанию
    0 - искать все

    Wake up, Neo, select all

    $color = New-Color "3579b9"
    Find-Color $color -Path "C:\Picture.bmp" -StartPos 50, 50 -EndPos 250, 250 -deviation 10

Параметры #3

  • -Color Искомый цвет

  • -Screen / -Path / -Handle / -Picture

  • -StartPos Координаты начала области поиска

  • -Size Размеры области поиска

  • -Deviation Отклонение в цвете (20 = 20% color deviation)

  • -Count Количество пикселей, которое будет найдено

    1 - по умолчанию
    0 - искать все

    Wake up, Neo, select all

    Find-Color (53, 121, 185) -Handle 1567893 -StartPos 50, 50 -Size 200, 200

Параметры #4

  • -Color Искомый цвет

  • -Screen / -Path / -Handle / -Picture

  • -Rect Объект Rectangle, содержащий информацию об области поиска

  • -Deviation Отклонение в цвете (20 = 20% color deviation)

  • -Count Количество пикселей, которое будет найдено

    1 - по умолчанию
    0 - искать все

    Wake up, Neo, select all

    $pic = Get-Image "D:\picture.bmp"
    $rect = [Drawing.Rectangle]::new(50, 50, 200, 200)
    Find-Color (53, 121, 185) -Picture $pic -Rect $rect

Примеры

  1. Найти на экране пиксель с указанным цветом.

    Wake up, Neo, select all

    Clear-Host
    $coord = Find-Color (36, 80, 123) -Screen
    if(!$coord){
    Write-Host "Цвет не найден" -ForegroundColor Red
    return
    }
    Write-Host "Координаты: $($coord.location)" -ForegroundColor Green
    Move-Cursor $coord.location # переместить на него курсор
    Start-Sleep 2 # пауза 2 секунды
    Click-Mouse $coord.location # клик на найденный пиксель
  2. Поиск на экране в указанных координатах.

    Wake up, Neo, select all

    Clear-Host
    $coord = Find-Color (36, 80, 123) -Screen -StartPos 200, 100 -EndPos 500, 400
    if(!$coord){
    Write-Host "Цвет не найден" -ForegroundColor Red
    return
    }

    Write-Host "Координаты: $($coord.location)" -ForegroundColor Green
    Move-Cursor $coord.location[0] # переместить на него курсор
  3. Поиск на экране всех пикселей с отклонением в цвете 2%

    Wake up, Neo, select all

    Clear-Host
    $coord = Find-Color (36 , 80 , 123) -Screen -Count 0 -Deviation 2
    if(!$coord){
    Write-Host "Цвет не найден" -ForegroundColor Red
    return
    }
    Write-Host "Всего найдено пикселей: $($coord.Count)" -ForegroundColor Green

    foreach($item in $coord){ # цикл для всех найденных пикселей
    Write-Host "Координаты: $($item.location)" -ForegroundColor Green
    Move-Cursor $item.location[0] # навести курсор
    Start-Sleep -m 100 # пауза 100 мсек
    }
  4. Поиск в указанном окне. Окно не должно быть перекрыто другими окнами.

    Wake up, Neo, select all

    Clear-Host
    $window = Find-Window -Title "PowerShell" # поиск окна с именем PowerShell
    if(!$window){
    Write-Host "Окно не найдено" -ForegroundColor Red
    return
    }
    Set-ForegroundWindow $window.handle[0] # переместить окно на передний план
    Start-Sleep 1 # пауза 1 секунду

    $coord = Find-Color (36, 80, 123) -Handle $window.handle[0] -Visible
    if($coord){
    Write-Host "Координаты: $($coord.location[0])" -ForegroundColor Green
    Move-Cursor $coord.location[0] -Handle $window.handle[0] # переместить курсор
    }
    else{
    Write-Host "Цвет не найден" -ForegroundColor Red
    }
  5. Поиск в указанном окне. Окно может быть перекрыто (но, не свёрнуто) другими окнами.
    Отличие от примера 4 в том что не указан параметр -Visible.

    Wake up, Neo, select all

    Clear-Host
    $window = Find-Window -Title "PowerShell" # поиск окна с именем PowerShell
    if(!$window){
    Write-Host "Окно не найдено" -ForegroundColor Red
    return
    }

    $coord = Find-Color (36, 80, 123) -Handle $window.handle[0]
    if($coord){
    Write-Host "Координаты: $($coord.location[0])" -ForegroundColor Green
    Click-Mouse $coord.location[0] -Handle $window.handle[0] -Event # клик, курсор при этом не задействован
    }
    else{
    Write-Host "Цвет не найден" -ForegroundColor Red
    }
  6. Получить скрин экрана и найти на нём пиксели указанного цвета.

    Wake up, Neo, select all

    Clear-Host
    $screen = Get-Image -Screen # сделать скрин всего экрана

    Start-Sleep 2
    $coord = Find-Color (36, 80, 123) -Picture $screen -Count 0 -Deviation 2 # поиск
    if($coord){
    $count = 0
    foreach($item in $coord){ # цикл для всех найденных пикселей
    Write-Host "$count Координаты: $($item.location)" -ForegroundColor Green
    $count++
    }
    }
    else{
    Write-Host "Цвет не найден" -ForegroundColor Red
    }
    $screen.Save("$env:homedrive$env:homepath\Desktop\image_result.bmp") # сохранить скрин на рабочий стол
    $screen.Dispose() # удалить скрин
  7. Передача параметров в виде массива.

    Wake up, Neo, select all

    $find = @{
    Color = New-Color (53, 121, 185) # цвет
    Handle = (Get-Process -id $pid).MainWindowHandle # окно PowerShell ISE
    StartPos = 0, 0 # координаты начала поиска
    Size = 100, 100 # область поиска
    Deviation = 1 # отклонение в цвете 1%
    Count = 1 # сколько искать пикселей
    }

    $pos = Find-Color @find # поиск
    $pos.location # координаты найденного пикселя
    Move-Cursor $pos.location -Handle $find.Handle # навести курсор на найденный пиксель