Как в цикле записывать скриншоты окна или экрана (Windows)

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Ответить
zevplus
Сообщения: 33
Зарегистрирован: Чт авг 02, 2018 1:40 pm
Благодарил (а): 11 раз
Поблагодарили: 0

Как в цикле записывать скриншоты окна или экрана (Windows)

Сообщение zevplus » Пн мар 30, 2020 2:00 pm

Всем доброго времени суток!

Задача - из под Majordomo, в цикле записывать скриншоты Windows окна или экрана.

Как вариант рассматриваю возможность из под Majordomo в цикле вызвать "boxcutter-fs is a minimal Windows command line screenshot
application".

Цикл сформирован и работает.

Как вызвать на выполнение это Windows application?

Заранее спасибо!

P.S.

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

Евгений.
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

Re: Как в цикле записывать скриншоты окна или экрана (Windows)

Сообщение tarasfrompir » Пн мар 30, 2020 2:27 pm

zevplus писал(а):
Пн мар 30, 2020 2:00 pm
Всем доброго времени суток!

Задача - из под Majordomo, в цикле записывать скриншоты Windows окна или экрана.

Как вариант рассматриваю возможность из под Majordomo в цикле вызвать "boxcutter-fs is a minimal Windows command line screenshot
application".

Цикл сформирован и работает.

Как вызвать на выполнение это Windows application?

Заранее спасибо!

P.S.

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

Евгений.
safe_exec - смотри бз мажордомо
За это сообщение автора tarasfrompir поблагодарил:
zevplus (Пн мар 30, 2020 5:23 pm)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
Аватара пользователя
xor
Сообщения: 2045
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 289 раз
Поблагодарили: 633 раза

Re: Как в цикле записывать скриншоты окна или экрана (Windows)

Сообщение xor » Пн мар 30, 2020 4:32 pm

zevplus писал(а):Всем доброго времени суток!

Задача - из под Majordomo, в цикле записывать скриншоты Windows окна или экрана.

Как вариант рассматриваю возможность из под Majordomo в цикле вызвать "boxcutter-fs is a minimal Windows command line screenshot
application".

Цикл сформирован и работает.

Как вызвать на выполнение это Windows application?

Заранее спасибо!

P.S.

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

Евгений.
В составе пакета прог под Винду для МДМ идёт ниркоммандер, который может, в тч, и скиншоты

Отправлено с моего Redmi 4X через Tapatalk

За это сообщение автора xor поблагодарил:
zevplus (Пн мар 30, 2020 5:23 pm)
Рейтинг: 1.16%
zevplus
Сообщения: 33
Зарегистрирован: Чт авг 02, 2018 1:40 pm
Благодарил (а): 11 раз
Поблагодарили: 0

Re: Как в цикле записывать скриншоты окна или экрана (Windows)

Сообщение zevplus » Пн мар 30, 2020 5:26 pm

Коллеги!

Всем спасибо!

отдельное спасибо за оперативность!

Решение:

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

safe_exec('E:\Program_Files\boxcutter-1.5\boxcutter-fs.exe E:\Program_Files\boxcutter-1.5\img\SS'.time().'('.(String)$i.').bmp');
где $i - счетчик цикла

Евгений!
zevplus
Сообщения: 33
Зарегистрирован: Чт авг 02, 2018 1:40 pm
Благодарил (а): 11 раз
Поблагодарили: 0

Re: Как в цикле записывать скриншоты окна или экрана (Windows)

Сообщение zevplus » Ср апр 01, 2020 10:18 am

Всем доброго времени суток!

Задача развивается - теперь нужно определить, что если экран черный (пустой), то остановить цикл.

Вижу простое решение - анализировать размер записанного скриншота. Если меньше, допустим, 30 Kb, то сделать еще парочку скриншотов для убедительности и если сумма размеров трех файлов будет меньше 90 Kb, то цикл остановить (и послать весточку инженеру).

В связи с этим вопрос: как средствами MJD узнать размер файла? (Куда копать?)

Нашел, что есть команда для командной строки Windows: for %I in (file.ext) do echo %~zI

т.е. теоретически, можно сделать

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

safe_exec('for %I in (file.ext) do echo %~zI');


Как этот результат привязать к переменной?

Возможно, есть более элегантное решение.

Заранее спасибо!

Евгений
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

Re: Как в цикле записывать скриншоты окна или экрана (Windows)

Сообщение tarasfrompir » Ср апр 01, 2020 10:37 am

zevplus писал(а):
Ср апр 01, 2020 10:18 am
Всем доброго времени суток!

Задача развивается - теперь нужно определить, что если экран черный (пустой), то остановить цикл.

Вижу простое решение - анализировать размер записанного скриншота. Если меньше, допустим, 30 Kb, то сделать еще парочку скриншотов для убедительности и если сумма размеров трех файлов будет меньше 90 Kb, то цикл остановить (и послать весточку инженеру).

В связи с этим вопрос: как средствами MJD узнать размер файла? (Куда копать?)

Нашел, что есть команда для командной строки Windows: for %I in (file.ext) do echo %~zI

т.е. теоретически, можно сделать

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

safe_exec('for %I in (file.ext) do echo %~zI');


Как этот результат привязать к переменной?

Возможно, есть более элегантное решение.

Заранее спасибо!

Евгений
Тут надо средства ПХП тебе изучать
Цикл - https://www.php.net/manual/ru/control-s ... es.for.php

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

for ($i = 1; $i <= 10; $i++) {
    echo $i;
}
Размер фала - https://www.php.net/manual/ru/function.filesize.php

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

// Пример вывода: Размер файла somefile.txt: 1024 байтов

$filename = 'somefile.txt';
echo 'Размер файла ' . $filename . ': ' . filesize($filename) . ' байтов';
Условие - https://www.php.net/manual/ru/control-structures.if.php

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

<?php
if ($a > $b) {
  echo "a больше b";
  $b = $a;
}
?>
Ну вроде все - остальное найдеш там же
И пожалуйста прежде чем чтото делать подумайте - на чем у вас МД написан (язык) и соответственно на таком языке и делайте
За это сообщение автора tarasfrompir поблагодарил:
zevplus (Ср апр 01, 2020 10:43 am)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
zevplus
Сообщения: 33
Зарегистрирован: Чт авг 02, 2018 1:40 pm
Благодарил (а): 11 раз
Поблагодарили: 0

Re: Как в цикле записывать скриншоты окна или экрана (Windows)

Сообщение zevplus » Ср апр 01, 2020 10:43 am

Спасибо!

Буду копать...

Я не программист, я только учусь (на реальных примерах)!

Евгений.
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 816 раз

Re: Как в цикле записывать скриншоты окна или экрана (Windows)

Сообщение tarasfrompir » Ср апр 01, 2020 10:56 am

zevplus писал(а):
Ср апр 01, 2020 10:43 am
Спасибо!

Буду копать...

Я не программист, я только учусь (на реальных примерах)!

Евгений.
Сам такой - но уже продвигаюсь вперед
За это сообщение автора tarasfrompir поблагодарил:
zevplus (Ср апр 01, 2020 11:09 am)
Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
zevplus
Сообщения: 33
Зарегистрирован: Чт авг 02, 2018 1:40 pm
Благодарил (а): 11 раз
Поблагодарили: 0

Re: Как в цикле записывать скриншоты окна или экрана (Windows)

Сообщение zevplus » Пт апр 03, 2020 11:58 am

Коллеги!

Всем спасибо!

Все получилось!

Кусочек кода для памяти (в реальности он больше и другой)...

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

$filename1 = "E:\TEST\PS1.png";
$filename2 = "E:\TEST\PS2.png";
$filename3 = "E:\TEST\PS3.png";

$filesize = filesize("E:\TEST\PS1.png");
$filesize += filesize("E:\TEST\PS2.png");
$filesize += filesize("E:\TEST\PS3.png");

If ($filesize > 100000) {

file_get_contents("http://192.168.11.214/sec/?pt=10&ir=00FDD22D&irp0=9000&irp1=4500&irp2=560&irp3=1600&irp4=560");

$TakeSS = 'E:\Program_Files\OBSCommand_1.5.2\OBSCommand\OBSCommand.exe /command=TakeSourceScreenshot,sourceName=Scene3,PictureFormat=png,saveToFilePath=';

$var1 = $TakeSS.$filename1; 
$var2 = $TakeSS.$filename2; 
$var3 = $TakeSS.$filename3; 

setTimeout("Timer_01","safe_exec('$var1');",5);
setTimeout("Timer_02","safe_exec('$var2');",10);
setTimeout("Timer_03","safe_exec('$var3');",15);

SetTimeOut("Timer_04,"callMethod('IR_Sender_10.TEST_Ch_UP');",20);

} else {
sg('IR_Sender_10.Counter', 0);
return "";
}
Ответить