Вверх ↑
Этот топик читают: Гость
Ответов: 2057
Рейтинг: 28
#1: 2018-10-17 22:27:09 ЛС | профиль | цитата
Здравствуйте. Я создал программу которая запускает консольную программу и общается с ней. При работе с ней у меня консольная программа спрашивает
File 'D:\Temp\Kasseta 4-3-14.mp4' already exists. Overwrite ? [y/N]
мне надо ввести "y" и нажать кнопку "Enter". Как это сделать? Пробую через точку doConsoleInput предать строку
y#13
не чего не выходит.
Вот код программы.

Add(MainForm,2953706,21,105)
{
Width=1036
}
Add(WinExec,3413429,448,210)
{
FileName="D:\Temp\ffmpeg.exe"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
Point(doConsoleInput)
link(FileName,2334527:Text,[(454,198)(447,198)])
link(Params,11689604:Text,[(461,198)(489,198)])
link(onConsoleResult,570142:doMessage,[(502,223)(502,216)])
link(onConsoleError,536412:doAdd,[(502,230)(502,265)])
link(onConsoleTerminate,8164200:doMessage,[(495,237)(495,314)])
}
Add(Button,10511276,336,210)
{
Left=305
Top=240
Caption="Запуск"
link(onClick,3413429:doConsoleExec,[(408,216)(408,230)])
}
Add(Edit,11689604,483,154)
{
Left=15
Top=15
Width=995
Text="-i "D:\Temp\Kasseta 6.avi" -pix_fmt yuv420p -aspect 4:3 -c:v libx264 -flags +ilme+ildct -top 1 -x264opts tff=1 -b:v 2M -maxrate 5M -bufsize 2M -preset faster -tune film -refs 4 -bf 5 -g 100 -c:a aac -b:a 224k "D:\Temp\Kasseta 4-3-14.mp4""
}
Add(Edit,2334527,441,154)
{
Left=20
Top=45
Width=865
Text="D:\\Temp\\ffmpeg.exe"
}
Add(Message,570142,525,210)
{
Caption="1"
}
Add(Message,8164200,525,308)
{
Caption="3"
}
Add(RichEdit,536412,525,259)
{
Left=20
Top=70
Width=870
Height=155
ScrollBars=3
}
Add(Button,1676256,336,273)
{
Left=25
Top=235
Caption="Q"
Data=String(q)
link(onClick,1150795:doEvent1,[])
}
Add(Hub,1150795,392,273)
{
InCount=2
OutCount=1
link(onEvent1,3413429:doConsoleInput,[(427,279)(427,237)])
}
Add(Button,2875526,336,336)
{
Left=100
Top=235
Caption="y"
Data=String(y#13)
link(onClick,1150795:doEvent2,[(380,342)(380,286)])
}

карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 2193
Рейтинг: 673
#2: 2018-10-17 23:15:53 ЛС | профиль | цитата
flood
динозавр
карма: 10

0
Ответов: 2059
Рейтинг: 131
#3: 2018-10-18 02:24:25 ЛС | профиль | цитата
Эдик, Для общения с консольными программами нужно перенаправлять каналы ввода/вывода на свою программу.
Командная строка у WinExec совсем не то, что нужно.
https://yadi.sk/d/iKeEKG__Nk3QHA
А при активном окне консоли кнопку "Y" нажать не пробовал?

Редактировалось 6 раз(а), последний 2018-10-18 03:01:01
карма: 6

0
Ответов: 2057
Рейтинг: 28
#4: 2018-10-18 13:54:06 ЛС | профиль | цитата
flint2 писал(а):
Командная строка у WinExec совсем не то, что нужно.

А почему команда "q" работает когда я её посылаю через точку doConsoleInput ?
Команда "q" останавливает кодирование файла программой FFMPEG.
карма: 1

0
Ответов: 2059
Рейтинг: 131
#5: 2018-10-18 17:47:17 ЛС | профиль | цитата
У меня нет пока своего компьютера, по этому я не могу посмотреть твою схему.
Умозрительно можно подумать, что такая итерация ввода происходит один раз, как остаточное явление после командной строки.
Ведь нет механизма "привет-ответ".
Кто перенаправил ввод для консоли с клавиатуры на твою схему?
В компоненте WinExec нет таких функций.
карма: 6

0
Ответов: 2057
Рейтинг: 28
#6: 2018-10-18 18:20:15 ЛС | профиль | цитата
flint2 писал(а):
Кто перенаправил ввод для консоли с клавиатуры на твою схему?

Я не знаю.
карма: 1

0
Ответов: 2059
Рейтинг: 131
#7: 2018-10-18 18:23:27 ЛС | профиль | цитата
Это был риторический вопрос.
Да никто!
А что, с моим компонентом не пробовал?

Редактировалось 1 раз(а), последний 2018-10-18 18:28:03
карма: 6

0
Ответов: 2057
Рейтинг: 28
#8: 2018-10-18 18:32:56 ЛС | профиль | цитата
flint2 писал(а):
А что, с моим компонентом не пробовал?

Пока нет.
карма: 1

0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)