Подскажите, пожалуйста, как правильно привязать скрипт к конкретному окну. Я так понял Handle при перезапуске окна меняется. А титул, выбранный через psclick не находится. Суть в том что можно запустить несколько окон с одинаковым названием игры. и отличаться будет только в конце приписка [1], [2] и т.д. Так же не нашёл в psClick относительных координат, есть ли в кликере работа с ними, и где их взять?
Привязка скрипта к конкретному окну с использованием относительных координат.
- Nobodykillme
- Сообщения: 4
- Зарегистрирован: 20 апр 2022, 12:10
- Благодарил (а): 5 раз
Re: Привязка скрипта к конкретному окну с использованием относительных координат.
А титул, выбранный через psclick не находится.
Если в имени окна есть спец. символы, то при поиске их нужно экранировать, поставьте \ перед такими символами.
Wake up, Neo, select all
$h = Find-Window -Title "NewWindow\[1\]" # найти окно
if(!$h){ # если окно не найдено
Write-Host "Окно не найдено" -ForegroundColor Red
Stop-Script # остановить скрипт
}
$h.handle[0]
есть ли в кликере работа с ними, и где их взять?
Есть. Start-Psclick
- Fors1k
- Администратор
- Сообщения: 57
- Зарегистрирован: 08 июн 2021, 17:23
- Благодарил (а): 4 раза
- Поблагодарили: 3 раза
Re: Привязка скрипта к конкретному окну с использованием относительных координат.
Nobodykillme писал(а): ↑20 апр 2022, 13:53Так же не нашёл в psClick относительных координат, есть ли в кликере работа с ними, и где их взять?
Посмотрите по ссылке, которую привел cirus, внизу "Памятка по координатам".
У программы есть родительское окно(в том примере сам калькулятор), и дочерние(в примере окошко с выводом результата).
Nobodykillme писал(а): ↑20 апр 2022, 13:53Подскажите, пожалуйста, как правильно привязать скрипт к конкретному окну. Я так понял Handle при перезапуске окна меняется. А титул, выбранный через psclick не находится.
Так же, как в примере из ссылки выше, титул для поиска окна самой программы берите из раздела "Родительское окно".
Если выполняете поиск по полному названию окна, то можете использовать параметр поиска "-EQ" для точного совпадения.
Например, для поиска данного окна браузера, в котором открыт этот топик:
Wake up, Neo, select all
$title = "Привязка скрипта к конкретному окну с использованием относительных координат. - psClick — Яндекс.Браузер"
Find-Window -Title $title -Option EQ
Титул дочернего окна "Chrome Legacy Window" использовать не нужно.
Можно выполнять поиск по части имени:
Wake up, Neo, select all
$title = "psClick — Яндекс.Браузер"
Find-Window -Title $title
Но тогда, как и сказал cirus, не забывайте экранировать спец символы, если они имеются.
Символы, нуждающиеся в экранировании, смотрите в операторе соответствия -match
Operators
- Nobodykillme
- Сообщения: 4
- Зарегистрирован: 20 апр 2022, 12:10
- Благодарил (а): 5 раз
Re: Привязка скрипта к конкретному окну с использованием относительных координат.
Спасибо за ответы. Спец. символы решили проблему. Окно нашлось. Попробовал отправить на бота скриншоты с перекрытого окна, не получилось. Там только режим "-Screen" доступен? Хотелось бы не весь экран скринить, а только это окно или вообще заданную область. И название скриншотам давать по типу "Дата_время".
Re: Привязка скрипта к конкретному окну с использованием относительных координат.
Хотелось бы не весь экран скринить, а только это окно или вообще заданную область. И название скриншотам давать по типу "Дата_время".
Wake up, Neo, select all
Clear-Host
$h = Find-Window -Title "PowerShell" # найти окно с указанным именем
if(!$h){ # если окно не найдено
Write-Host "Окно не найдено" -ForegroundColor Red
Stop-Script # остановить скрипт
}
$screen = Get-Image -Handle $h.handle[0] -StartPos 100, 50 -EndPos 400, 300 # скрин части окна
Write-Host "Ширина: $($screen.Width)"
Write-Host "Высота: $($screen.Height)"
$date = Get-Date -Format "dd.MM.yyyy_HH.mm.ss" # получить текущую дату и время в указанном формате
$screen.Save("$home\Desktop\$date.bmp") # сохранить скрин на рабочий стол
$screen.Dispose() # удалить изображение
- Nobodykillme
- Сообщения: 4
- Зарегистрирован: 20 апр 2022, 12:10
- Благодарил (а): 5 раз
Re: Привязка скрипта к конкретному окну с использованием относительных координат.
cirus писал(а): ↑21 апр 2022, 03:18Хотелось бы не весь экран скринить, а только это окно или вообще заданную область. И название скриншотам давать по типу "Дата_время".
Wake up, Neo, select all
Clear-Host
$h = Find-Window -Title "PowerShell" # найти окно с указанным именем
if(!$h){ # если окно не найдено
Write-Host "Окно не найдено" -ForegroundColor Red
Stop-Script # остановить скрипт
}
$screen = Get-Image -Handle $h.handle[0] -StartPos 100, 50 -EndPos 400, 300 # скрин части окна
Write-Host "Ширина: $($screen.Width)"
Write-Host "Высота: $($screen.Height)"
$date = Get-Date -Format "dd.MM.yyyy_HH.mm.ss" # получить текущую дату и время в указанном формате
$screen.Save("$home\Desktop\$date.bmp") # сохранить скрин на рабочий стол
$screen.Dispose() # удалить изображение
Почему то скринит чёрный экран. Пробовал убрать область скрина, сделать полностью скрин, думал может с координатами что-то. Нет- весь скрин чёрный. При этом привязка к окну работает, потому что я применяю перемещение и изменение размера окна в начале скрипта, чтобы потом относительные координаты всегда точно работали.
Re: Привязка скрипта к конкретному окну с использованием относительных координат.
Почему то скринит чёрный экран.
В Win10 такое бывает. Иногда помогает запуск приложения в режиме совместимости Win7.
Если делаете скрин с браузера или эмулятора андройд, то попробуйте другие.
- Nobodykillme
- Сообщения: 4
- Зарегистрирован: 20 апр 2022, 12:10
- Благодарил (а): 5 раз
Re: Привязка скрипта к конкретному окну с использованием относительных координат.
Игра вроде как мобильная, но у них есть свой лаунчер для пк версии. Возможно он тоже устроен как эмулятор.
- Fors1k
- Администратор
- Сообщения: 57
- Зарегистрирован: 08 июн 2021, 17:23
- Благодарил (а): 4 раза
- Поблагодарили: 3 раза
Re: Привязка скрипта к конкретному окну с использованием относительных координат.
Кроме "-Screen" возможных параметров еще много =)
Get-Image
В таком случае нужно делать снимок окна, когда оно не перекрыто. Или можете написать в скрипте вывод окна на передний план, делать его снимок, потом возвращать обратно. Не все приложения позволяют делать снимок перекрытого окна.
- Nobodykillme
- Сообщения: 4
- Зарегистрирован: 20 апр 2022, 12:10
- Благодарил (а): 5 раз
Re: Привязка скрипта к конкретному окну с использованием относительных координат.
Fors1k писал(а): ↑21 апр 2022, 14:22Кроме "-Screen" возможных параметров еще много =)
Get-ImageВ таком случае нужно делать снимок окна, когда оно не перекрыто. Или можете написать в скрипте вывод окна на передний план, делать его снимок, потом возвращать обратно. Не все приложения позволяют делать снимок перекрытого окна.
Я про прямые команды отправки в tg. Похоже нет такой функции. Только если сохранять сначала на комп, а потом подгружать файлом в tg, но тут у меня возникла проблема - как то криво сохраняется файл один и тот же почему то. Как будто застряло изображение в буфере, хотя в конце есть команда по очистке ($screen.Dispose() # удалить изображение). А ещё откуда то вылезает на изображение кусок окна powershell`a. хотя я его убираю в другую сторону вообще.
В целом код выглядит так:
Wake up, Neo, select all
$screen = Get-Image -Handle $h.handle[0]
Write-Host "Ширина: $($screen.Width)"
Write-Host "Высота: $($screen.Height)"
$date = Get-Date -Format "dd.MM.yyyy_HH.mm.ss" # получить текущую дату и время в указанном формате
$screen.Save("C:\Users\Egor\Pictures\Screenshots\$date.bmp") # сохранить скрин
$screen.Dispose() # удалить изображение
Send-TelegramFile "C:\Users\Egor\Pictures\Screenshots\$date.bmp" # отправить его в тг
Stop-Script
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей