Отправить в telegram скриншот/картинку

Kyja
Сообщения: 7
Зарегистрирован: 18 авг 2021, 00:24

Отправить в telegram скриншот/картинку

Сообщение Kyja »

Добрый день подскажите пожалуйста как отправить именно картинку в телеграм?

Код: Выделить всё

Clear-Host
$screen = Get-Image -Screen -StartPos 100, 50 -EndPos 400, 300 
Write-Host "Ширина: $($screen.Width)"
Write-Host "Высота: $($screen.Height)"
$screen.Save("$env:homedrive$env:homepath\Desktop\image_result.bmp")  # сохранить скрин на рабочий стол
Send-TelegramMessage $screen
$screen.Dispose() # удалить изображение

Пробовал такой вариант но приходит только System.Drawing.Bitmap текстом (
Поиском пробовал но он видимо не работает даже если искать Telegram выдаст ноль результатов

И второй вопрос чтобы не плодить темы
Использовать одновременно пилот и psClick через ардуино можно?

Спойлер

Понятно что есть ограничение буфера ардуино но там не будет команд которые отправляются с такой скорость все в человеко подобной скорости

И риторический вопрос по скорости работы допустим скрипт на луа в пилоте где используется
около 250

Код: Выделить всё

if color (1610, 587) ~= 8294004  then

Насколько быстрее будет обрабатываться в psClick ? хотя бы примерно

Аватара пользователя
cirus
Expert
Сообщения: 56
Зарегистрирован: 12 июн 2021, 17:53
Поблагодарили: 8 раз

Re: Отправить в telegram скриншот/картинку

Сообщение cirus »

как отправить именно картинку в телеграм?

В выходные появится Fors1k, думаю добавит такой функционал.

Использовать одновременно пилот и psClick через ардуино можно?

Команда не выполнится если порт будет открыт другим приложением.
А какой смысл 2 кликера использовать? Если в psClick нет какого-то функционала, то пишите в предложения, добавить не проблема.

И риторический вопрос по скорости работы допустим скрипт на луа в пилоте где используется
около 250 if color

Без разницы, так винда устроена, на получение цвета с экрана уходит 16 мсек, с аэро в вин7 33 мсек.
Если получать цвет с окна, а не экрана, то обычно это быстрее, зависит от приложения.
Ещё есть вариант сделать скрин и на нём проверять цвет точек. Для теста:

Wake up, Neo, select all

Clear-Host
$time = Get-Date # получить текущее время
$ScreenShot = Get-Image -Screen # сделать скрин всего экрана
for($i=0; $i -lt 1000; $i++) # цикл, 1000 раз получить цвет и сравнить его
{
$color = Get-Color 157, 176 -Image $ScreenShot # получить цвет со скрина в координатах 157, 176
if($color -eq "001F3E" ){ # сравнить цвет
# что-то делаем если цвет совпал
}
}
Write-Host ("Затрачено времени: $([int]((Get-Date) - $time).TotalMilliseconds) мс") -ForegroundColor Green

Первый запуск скрипта будет чуть медленнее, последующие быстрее.

Последний раз редактировалось cirus 24 сен 2021, 15:03, всего редактировалось 1 раз.
Kyja
Сообщения: 7
Зарегистрирован: 18 авг 2021, 00:24

Re: Отправить в telegram скриншот/картинку

Сообщение Kyja »

По телеграму понял
По двум одновременно тоже понял.
Просто сразу все переписать на новый синтаксис у меня уйдет очень много времени поэтому хотел попробовать частями переходить.
Из функционала справку прочитал но не очень понял как получить статус активных скриптов и как запустить второй скрипт ? (через Start-Process ?)
Или тут тоже возможно использовать многопоточность в одном?

По проверке цвета у меня в основном все скрипты это условно

Код: Выделить всё

if color (1610, 587) ~= 8294004  then

Хотелось бы сразу понять какой вариант самый быстрый именно по производительности.
Get-Color с примером 3 или 4?
Или же вариант как предложили Вы со скрином но не всего экрана а допустим в нужной области размером 5*5 пикселей (ведь по факту мне надо проверить только 1 пиксель и чем меньще скрин тем быстрее верно?)

Аватара пользователя
cirus
Expert
Сообщения: 56
Зарегистрирован: 12 июн 2021, 17:53
Поблагодарили: 8 раз

Re: Отправить в telegram скриншот/картинку

Сообщение cirus »

Хотелось бы сразу понять какой вариант самый быстрый именно по производительности.
Get-Color с примером 3 или 4?

Пример 4 в большинстве приложений будет быстрее. Но, не во всех работает получение изображения с окна, особенно в win10. Делать скрин для проверки одной точки нет смысла, вариант со скрином подойдет не для всех ситуаций. К примеру, делаем скрин, проверяем несколько координат, если цвет совпал пауза 2 секунды, дальше по сути скрин уже не актуален, т. к. за 2 секунды изображение скорее всего изменится и проверять уже нет смысла. Но, например, для проверки игрового поля, для игр типа 3 в ряд, быстрее использовать именно скрин, хоть для проверки цвета, хоть для поиска картинок.

со скрином но не всего экрана а допустим в нужной области размером 5*5 пикселей

Можно сделать скрин нужных размеров.

как получить статус активных скриптов

Не знаю.

Или тут тоже возможно использовать многопоточность в одном?

Тут есть и таймеры и потоки, но они для разных задач.
Когда вызывается код из таймера, то скрипт приостанавливается, когда выполняется поток, то скрипт продолжает работать. У таймера есть доступ к переменным скрипта, у потока нет.
Таймеры чуть позже будут реализованы, чтобы упростить их использование.

Kyja
Сообщения: 7
Зарегистрирован: 18 авг 2021, 00:24

Re: Отправить в telegram скриншот/картинку

Сообщение Kyja »

Тут есть и таймеры и потоки, но они для разных задач.

А можно пример многопоточности в списке команд не увидел. И есть ли какая то возможность проверить выполняется поток или нет (аналог статуса активных скриптов).
И тоже не нашел в справке аналог goto или его еще нет?

Аватара пользователя
cirus
Expert
Сообщения: 56
Зарегистрирован: 12 июн 2021, 17:53
Поблагодарили: 8 раз

Re: Отправить в telegram скриншот/картинку

Сообщение cirus »

И тоже не нашел в справке аналог goto или его еще нет?

Его нет в Powershell.

Kyja
Сообщения: 7
Зарегистрирован: 18 авг 2021, 00:24

Re: Отправить в telegram скриншот/картинку

Сообщение Kyja »

А как таймер может помочь выйти допустим из бесконечного вайла

Код: Выделить всё

while color (746, 504  ) == 240   do --ждем 
if color (21, 13 ) == 3686878   then -- выходим
goto drops
end
---- тут действия пока ваил активен
end

::drops::

В данном примере ваил может длится что 5 секунд что несколько минут и выйти из него надо если появился цвет в координатах допустим if color (21, 13 ) == 3686878 then

Аватара пользователя
cirus
Expert
Сообщения: 56
Зарегистрирован: 12 июн 2021, 17:53
Поблагодарили: 8 раз

Re: Отправить в telegram скриншот/картинку

Сообщение cirus »

А как таймер может помочь выйти допустим из бесконечного вайла

Для этого не нужен таймер и тем более goto. Используйте break.

Kyja
Сообщения: 7
Зарегистрирован: 18 авг 2021, 00:24

Re: Отправить в telegram скриншот/картинку

Сообщение Kyja »

Извиняюсь как всегда привел кривой пример, вот более реальный пример

Код: Выделить всё

-- начало скрипта
-- тут около 300 строчек и примерно 100 if 
 ::drops::
-- тут нужный отрезок в который должен попасть выходом из вайла чтобы не перебирать снова 100 if
-- тут около 300 строчек и примерно 100 if 
while color (746, 504  ) == 240   do --ждем 
if color (21, 13 ) == 3686878   then -- выходим
goto drops
end
---- тут действия пока ваил активен
end
-- тут около 300 строчек и примерно 100 if
-- конец скрипта

Просто у меня очень много где используется goto чтобы не перебирать лишние if color для более быстрой работы

Спойлер

это скрипты комбатов в wow там все очень быстро происходит

Аватара пользователя
cirus
Expert
Сообщения: 56
Зарегистрирован: 12 июн 2021, 17:53
Поблагодарили: 8 раз

Re: Отправить в telegram скриншот/картинку

Сообщение cirus »

чтобы не перебирать лишние if

Для этого используются переменные.

Wake up, Neo, select all

$flag = 0
# тут какое-то условие, если выполнено, то присвоить переменной $flag какое-то значение

if($flag){ # если переменная не равна 0, то выполнить блок, иначе он будет пропущен
# тут ваши 100 if
}

Ещё нужно использовать циклы и оператор break.

Wake up, Neo, select all

Clear-Host
Write-Host "Начало скрипта"

$x = 0
:drops while($true){ # бесконечный цикл
Write-Host "drops"

while ($true){ # бесконечный цикл
if($x -eq 7 ){ # если переменная равна 7
break drops # выход из цикла с меткой drops
}
Write-Host (++$x)

if($x -eq 3 ){ # если переменная равна 3
break # выход из цикла
}
Write-Host "Какие-то действия"
}
}

Write-Host "Конец скрипта"
Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей