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
Примеры
-
Найти на экране пиксель с указанным цветом.
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 # клик на найденный пиксель -
Поиск на экране в указанных координатах.
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] # переместить на него курсор -
Поиск на экране всех пикселей с отклонением в цвете 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 мсек
} -
Поиск в указанном окне. Окно не должно быть перекрыто другими окнами.
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
} -
Поиск в указанном окне. Окно может быть перекрыто (но, не свёрнуто) другими окнами.
Отличие от примера 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
} -
Получить скрин экрана и найти на нём пиксели указанного цвета.
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() # удалить скрин Передача параметров в виде массива.
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 # навести курсор на найденный пиксель