Как в цикле записывать скриншоты окна или экрана (Windows)
Модератор: immortal
-
- Сообщения: 33
- Зарегистрирован: Чт авг 02, 2018 1:40 pm
- Благодарил (а): 11 раз
- Поблагодарили: 0
Как в цикле записывать скриншоты окна или экрана (Windows)
Всем доброго времени суток!
Задача - из под Majordomo, в цикле записывать скриншоты Windows окна или экрана.
Как вариант рассматриваю возможность из под Majordomo в цикле вызвать "boxcutter-fs is a minimal Windows command line screenshot
application".
Цикл сформирован и работает.
Как вызвать на выполнение это Windows application?
Заранее спасибо!
P.S.
В имя файла записываемого скрина нужно добавить счетчик из цикла.
Евгений.
Задача - из под 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)
safe_exec - смотри бз мажордомоzevplus писал(а): ↑Пн мар 30, 2020 2:00 pmВсем доброго времени суток!
Задача - из под Majordomo, в цикле записывать скриншоты Windows окна или экрана.
Как вариант рассматриваю возможность из под Majordomo в цикле вызвать "boxcutter-fs is a minimal Windows command line screenshot
application".
Цикл сформирован и работает.
Как вызвать на выполнение это Windows application?
Заранее спасибо!
P.S.
В имя файла записываемого скрина нужно добавить счетчик из цикла.
Евгений.
- За это сообщение автора tarasfrompir поблагодарил:
- zevplus (Пн мар 30, 2020 5:23 pm)
- Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
- xor
- Сообщения: 2045
- Зарегистрирован: Сб ноя 22, 2014 8:45 pm
- Благодарил (а): 289 раз
- Поблагодарили: 633 раза
Re: Как в цикле записывать скриншоты окна или экрана (Windows)
В составе пакета прог под Винду для МДМ идёт ниркоммандер, который может, в тч, и скиншотыzevplus писал(а):Всем доброго времени суток!
Задача - из под Majordomo, в цикле записывать скриншоты Windows окна или экрана.
Как вариант рассматриваю возможность из под Majordomo в цикле вызвать "boxcutter-fs is a minimal Windows command line screenshot
application".
Цикл сформирован и работает.
Как вызвать на выполнение это Windows application?
Заранее спасибо!
P.S.
В имя файла записываемого скрина нужно добавить счетчик из цикла.
Евгений.
Отправлено с моего Redmi 4X через Tapatalk
- Рейтинг: 1.16%
win10 connect https://connect.smartliving.ru/profile/303
-
- Сообщения: 33
- Зарегистрирован: Чт авг 02, 2018 1:40 pm
- Благодарил (а): 11 раз
- Поблагодарили: 0
Re: Как в цикле записывать скриншоты окна или экрана (Windows)
Коллеги!
Всем спасибо!
отдельное спасибо за оперативность!
Решение:
где $i - счетчик цикла
Евгений!
Всем спасибо!
отдельное спасибо за оперативность!
Решение:
Код: Выделить всё
safe_exec('E:\Program_Files\boxcutter-1.5\boxcutter-fs.exe E:\Program_Files\boxcutter-1.5\img\SS'.time().'('.(String)$i.').bmp');
Евгений!
-
- Сообщения: 33
- Зарегистрирован: Чт авг 02, 2018 1:40 pm
- Благодарил (а): 11 раз
- Поблагодарили: 0
Re: Как в цикле записывать скриншоты окна или экрана (Windows)
Всем доброго времени суток!
Задача развивается - теперь нужно определить, что если экран черный (пустой), то остановить цикл.
Вижу простое решение - анализировать размер записанного скриншота. Если меньше, допустим, 30 Kb, то сделать еще парочку скриншотов для убедительности и если сумма размеров трех файлов будет меньше 90 Kb, то цикл остановить (и послать весточку инженеру).
В связи с этим вопрос: как средствами MJD узнать размер файла? (Куда копать?)
Нашел, что есть команда для командной строки Windows: for %I in (file.ext) do echo %~zI
т.е. теоретически, можно сделать
Как этот результат привязать к переменной?
Возможно, есть более элегантное решение.
Заранее спасибо!
Евгений
Задача развивается - теперь нужно определить, что если экран черный (пустой), то остановить цикл.
Вижу простое решение - анализировать размер записанного скриншота. Если меньше, допустим, 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)
Тут надо средства ПХП тебе изучать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;
}
Код: Выделить всё
// Пример вывода: Размер файла somefile.txt: 1024 байтов
$filename = 'somefile.txt';
echo 'Размер файла ' . $filename . ': ' . filesize($filename) . ' байтов';
Код: Выделить всё
<?php
if ($a > $b) {
echo "a больше b";
$b = $a;
}
?>
И пожалуйста прежде чем чтото делать подумайте - на чем у вас МД написан (язык) и соответственно на таком языке и делайте
- За это сообщение автора tarasfrompir поблагодарил:
- zevplus (Ср апр 01, 2020 10:43 am)
- Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
-
- Сообщения: 33
- Зарегистрирован: Чт авг 02, 2018 1:40 pm
- Благодарил (а): 11 раз
- Поблагодарили: 0
Re: Как в цикле записывать скриншоты окна или экрана (Windows)
Спасибо!
Буду копать...
Я не программист, я только учусь (на реальных примерах)!
Евгений.
Буду копать...
Я не программист, я только учусь (на реальных примерах)!
Евгений.
- tarasfrompir
- Сообщения: 3216
- Зарегистрирован: Ср мар 02, 2016 8:18 pm
- Откуда: Украина Пирятин
- Благодарил (а): 223 раза
- Поблагодарили: 816 раз
Re: Как в цикле записывать скриншоты окна или экрана (Windows)
Сам такой - но уже продвигаюсь вперед
- За это сообщение автора tarasfrompir поблагодарил:
- zevplus (Ср апр 01, 2020 11:09 am)
- Рейтинг: 1.16%
Спасибо нам ПОМОЖЕТ..!
-
- Сообщения: 33
- Зарегистрирован: Чт авг 02, 2018 1:40 pm
- Благодарил (а): 11 раз
- Поблагодарили: 0
Re: Как в цикле записывать скриншоты окна или экрана (Windows)
Коллеги!
Всем спасибо!
Все получилось!
Кусочек кода для памяти (в реальности он больше и другой)...
Всем спасибо!
Все получилось!
Кусочек кода для памяти (в реальности он больше и другой)...
Код: Выделить всё
$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 "";
}