|
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
|
|
Управление сторонним приложением10.06.2015, 21:17. Показов 4973. Ответов 15
Метки нет (Все метки)
Здравствуйте!
1) есть готовая чужая программа для обрезки видео. С программой работаем через командную строку windows; 2) есть моя программа. Нужно: 1) отправить н-ное количество cmd команд чужой программе; 2) дождаться ответа 3) получить этот ответ в текстовом формате 4) найти среди этого текста нужное число (длинну видео) 5) далее я попробую уже сам разобраться, если что не получится, буду писать сюда. 6) обработать как-то ошибки (может через if) тоже попробую сам, но в основном нужна ваша помощь. Знаю вроде что отправлять терминальные команды можно через Shell но это если одну, а если несколько последовательных? И как и когда закрывается терминальная сессия? Закрывается ли она вообще? Короче вот как-то так.. Спасибо за бесценную помощь!
0
|
|
| 10.06.2015, 21:17 | |
|
Ответы с готовыми решениями:
15
Программное управление внешним приложением |
|
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
|
|
| 13.06.2015, 21:08 [ТС] | |
|
Спасибо, буду гуглить!
![]() Как нагуглю, отпишусь.
0
|
|
|
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
|
|
| 16.06.2015, 20:50 [ТС] | |
|
Нагуглил, но ничего понять не могу вообще!
Пожалуйста, кому не лень, объясните нубу что к чему, а то не вкумекаю никак...
0
|
|
|
|
||||||
| 16.06.2015, 21:50 | ||||||
Сообщение было отмечено Памирыч как решение
Решение
https://msdn.microsoft.com/ru-... 10%29.aspx https://msdn.microsoft.com/ru-... 10%29.aspx https://msdn.microsoft.com/ru-... 10%29.aspx
0
|
||||||
|
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
|
|
| 16.06.2015, 23:01 [ТС] | |
|
Ваш кусок кода вставляется с ошибками, не могу понять почему так?
0
|
|
|
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
|
||||||
| 16.06.2015, 23:22 [ТС] | ||||||
|
Ага, только что дошло, что то Вы не ошиблись)
Уже переделываю. В принципе Ваш код мне более понятен чем те примеры на сайтах... Добавлено через 14 минут Пока не тестировал, но получилось примерно такое:
0
|
||||||
|
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
|
|||||||||||
| 17.06.2015, 00:39 [ТС] | |||||||||||
|
Ну насколько я понял, Arguments это не команда, а всего лишь параметры запуска приложения (если нужно запустить его с параметром)...
Нужна именно консольная сессия. Пока для меня это туман... ну вот оглашаю переменную (но это не похоже на переменную):
![]() Добавлено через 59 минут Не.. Хоть убейте не пойму примера... Ну стартует процесс и что дальше у них происходит? Может у них приложение открывается и ждет ввода данных? У меня же со сторонней программой можно работать только непосредственно из терминала винды, введя при этом например "ffprobe "C:/Video.mp4"". Программа выводит полную информацию о видеофайле... Но запускать программу, а после вводить в нее что-то бесполезно, она закрывается сразу же... В Вашем примере кода все вроде сходится, типа команду я задаю в качестве параметра запуска и сразу же ловлю ответ, потом прога закрывается... Но оно не работает... Проверял уже... Вы говорите что чего-то не хватает.. Я понять не могу, чего именно? Господь Бог свидетель что все это время пялился в пример как баран на новые ворота... Вспомнилось только старый язык Turbo Pascal со своими ReadLn и WriteLn... Но это ж только чтобы что-то вывести в консоль или считать с консоли (когда юзер вводит).. Но это же не дает команду приложению. Короче поясняйте, я уже больше не могу, мозги пухнут...
0
|
|||||||||||
|
|
|
| 17.06.2015, 06:26 | |
|
Запускаете процесс, с аргументами или без - смотрите сами.
Процесс висит и ждёт ввода команды/данных/текста с клавиатуры. Если включен редирект stdout, приглашение к вводу можно считать через поток StandardOutput. Если включен редирект stdin, данные можно ввести из своей программы через поток StandardInput. И смотреть на результат выполнения снова через StandardOutput.
1
|
|
|
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
|
||||||
| 23.06.2015, 02:28 [ТС] | ||||||
|
Спасибо за разъяснения!)
Получилось) Только: 1) Ответ почему-то приходит не в Output, а в Error; 2) Исходя из этого, убираю строку "... .StartInfo.RedirectStandardOutput = True" из общего списка (за ненадобностью) и в последствии аутпат не обрабатываю никак. В результате получаю в добавок к чистому ответу еще штук 7 ошибок.. Поэтому оставил ту строку и получаю чистый ответ, хоть и в потоке ошибок (но это все не главное); 3) Главное то, что эта вся ересь в упор не фурычит с русскими символами! Я ведь в консоль скармливаю команду, включающую путь к видеофайлу, а этот путь (в прочем как и само имя файла) может быть с кириллицей! Я понимаю что дело в кодировке! Командная строка вообще (насколько я понимаю) адекватно работает только с кодировкой OEM 866! Но как мне ее получить? Вот этот весь огород:
0
|
||||||
|
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
|
|||||||||||
| 24.06.2015, 02:04 [ТС] | |||||||||||
|
Мимо.. Кракозябры другие, но от этого не легче)
Добавлено через 1 час 31 минуту Кажись я понял в чем проблема. Да и сам код коряво был написан в плане кодировок. Часть кода уже исправил и эта часть теперь работает правильно. Саму то команду я подаю в левой кодировке, а надо подавать ее в 866. Если я нащупаю как это сделать, то будет пахать и никуда не денется. Дело в том, что стартуя процесс ffprobe.exe, он сразу же закрывается, а не ждет от меня команд. Команд ждет cmd.exe, то есть реальный терминал винды, но так как мне в падлу его искать (да и мало ли что не так), то я сам решил сгенерировать программно *.cmd файл и поместить его в некую папку. В сам этот файл я уже поместил команду cd <путь к папке с файлом ffprobe.exe> и далее передал управление юзеру. Таким образом я получил готовое приложение, которое не закрывается сразу же после открытия, а именно висит и ждет от юзера команд, управление которыми я в последствии перехвачиваю. Так вот этот файл я сохранял ранее без указания кодировки!! То есть уже в результате двойного клика по этому файлу я видел в консоли кракозябры! Непорядок! Добавил в параметры сохранения 866 кодировку:
Аутпат читаю уже тоже в кодировке 866 и все чётенько) Русские буквы как полагается))) А вот с ответом от самой программы ffprobe.exe, который приходит в ошибку возникают проблемы. Но проблема в том, как и писал уже выше, что сам путь к видеофайлу приходит в хрен знает какой кодировке, а не 866! Сама программа не понимает пути с русскими символами и в ответе пишет "No such file or directory", естественно дальше уже ни о каком поиске инфы с длинной видео не может идти и речи. Вот кстати код выполнения процесса:
0
|
|||||||||||
|
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
|
|||||||||||||||||||||
| 25.06.2015, 02:39 [ТС] | |||||||||||||||||||||
|
Помогло!)
Только чуток не так. Надо было написать:
Огромное спасибо за помощь! Работает! Уже показывает длину видеофайла с русским именем) Добавлено через 1 час 32 минуты Кстати программа ffprobe возвращает ответ в кодировке UTF8 почему-то... Поэтому вместо:
0
|
|||||||||||||||||||||
| 25.06.2015, 02:39 | |
|
Помогаю со студенческими работами здесь
16
Нужна консультация, управление сторонним приложением Взаимодействие со сторонним приложением Работа со сторонним приложением Открытие файла сторонним приложением Работа со сторонним приложением и веб браузером Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|