Вверх ↑
Этот топик читают: Гость
Ответов: 44
Рейтинг: 0
#1: 2018-11-30 14:34:45 ЛС | профиль | цитата
Подскажите: как отловить завершение консольной программы?

На точку doConsoleExec подается команда на запуск BAT файла, батник отрабатывает, а дальше тишина,
onConsoleTerminate не работает.

Редактировалось 1 раз(а), последний 2018-11-30 14:36:27
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 4621
Рейтинг: 746
#2: 2018-11-30 14:59:10 ЛС | профиль | цитата
BaseD писал(а):
батник отрабатывает
Ты указываешь батник в свойстве FileName? Вероятно, нужно указывать cmd.exe, а путь к батнику - в свойстве Param как аргумент для cmd.exe.
карма: 26

0
Ответов: 44
Рейтинг: 0
#3: 2018-11-30 15:12:02 ЛС | профиль | цитата
На точку doConsoleExec подается сформированный путь до батника, весь результат выполнения приходит в RichEdit через onConsoleResult.
cmd.exe не подходит, по причине появления "черного окна"

Можно было бы запустить все через doExec, а результат отработанного батника снять с onFinished, но опять же, упираюсь в черное окно.

Редактировалось 1 раз(а), последний 2018-11-30 15:13:05
карма: 0

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#4: 2018-11-30 15:56:56 ЛС | профиль | цитата
BaseD писал(а):
Можно было бы запустить все через doExec, а результат отработанного батника снять с onFinished, но опять же, упираюсь в черное окно.

В последний версии от черного окна можно избавится режимом запуска окна Mode. Последнюю версию можно взять на SVN.
карма: 22

0
Ответов: 44
Рейтинг: 0
#5: 2018-11-30 16:02:07 ЛС | профиль | цитата
nesco писал(а):
В последний версии от черного окна можно избавится режимом запуска окна Mode

Ну а если все таки через doConsoleExec? Я так понял решения нет?
карма: 0

0
Ответов: 233
Рейтинг: 12
#6: 2019-04-21 19:30:09 ЛС | профиль | цитата
А как правильно передавать параметры консоли? Пытаюсь передать curl google.com разными способами, но ничего не получаю в ответ
карма: 2

0
Ответов: 4621
Рейтинг: 746
#7: 2019-04-22 10:16:25 ЛС | профиль | цитата
Iliya писал(а):
Пытаюсь передать
Filename=curl.exe
Param=google.com
Iliya писал(а):
но ничего не получаю в ответ
Смотря откуда ждать ответ. Если из стандартного вывода - тогда это точка onConsoleResult.
А зачем именно CURL?

Редактировалось 1 раз(а), последний 2019-04-22 10:18:19
карма: 26

0
Ответов: 233
Рейтинг: 12
#8: 2019-04-22 11:13:59 ЛС | профиль | цитата
Netspirit, для работы с библиотекой curl. Самое интересное что если подавать строку на Param или на вход doConsoleExec - то ничего не работает! А работает только если подавать несколько параметров на doConsoleInput:

Add(MainForm,6521569,189,77)
{
Width=630
Height=816
Caption="CMD"
Position=1
}
Add(Memo,5989221,504,210)
{
Left=5
Top=125
Width=603
Height=648
ScrollBars=3
}
Add(WinExec,9263721,399,196)
{
FileName="cmd.exe"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(doConsoleInput)
link(onConsoleResult,7117745:doCharset,[])
}
Add(Charset,7117745,448,210)
{
link(onCharset,5989221:doAdd,[])
}
Add(Memo,11983131,301,168)
{
Left=5
Top=5
Width=603
Height=85
Strings=#14:cd C:\CURL\bin|24:curl -I https://losst.ru|5:pause|
ScrollBars=3
}
Add(Hub,8743468,245,210)
{
link(onEvent1,9263721:doConsoleExec,[])
link(onEvent2,6317388:doData,[(280,223)(280,237)])
}
Add(DoData,6317388,301,231)
{
link(onEventData,9263721:doConsoleInput,[(366,237)(366,223)])
link(Data,11983131:Text,[])
}
Add(Button,15345140,189,210)
{
Left=175
Top=95
Width=95
Caption="Подключить"
link(onClick,8743468:doEvent1,[])
}
Add(StyleXP,10364154,189,126)
{
}

Редактировалось 1 раз(а), последний 2019-04-22 11:15:12
карма: 2

0
Ответов: 4621
Рейтинг: 746
#9: 2019-04-22 11:49:42 ЛС | профиль | цитата
Iliya писал(а):
то ничего не работает
Ну, так это совершенно разные механизмы взаимодействия с консольной программой. Param - это командная строка приложения. Указывается при старте приложения и не может быть изменена. А doConsoleInput - это интерактивное взаимодействие с программой через стандартный канал ввода (STDIN), как в обычной cmd.exe - программа запускается, ожидает ввода команд в консоли и выдаёт результат туда же.
Всё это должна описывать документация. Например, "curl.exe google.com" должно работать, только, вероятно, надо указывать адрес с протоколом: "curl.exe https://google.com" (согласно https://curl.haxx.se/docs/manpage.html)

Хотя и так работает:
Add(MainForm,2953706,21,105)
{
Position=1
}
Add(Button,16707451,98,175)
{
Left=15
Top=40
Caption="Get it"
link(onClick,6657940:doEvent1,[])
}
Add(Edit,4503076,245,98)
{
Left=15
Top=15
Width=365
Text="google.com"
}
Add(Memo,4375270,308,182)
{
Left=15
Top=65
Width=365
Height=190
ScrollBars=3
}
Add(WinExec,6728693,238,168)
{
FileName="curl.exe"
Point(doConsoleExec)
Point(onConsoleResult)
link(Params,4503076:Text,[])
link(onConsoleResult,4375270:doAdd,[])
}
Add(Hub,6657940,161,175)
{
link(onEvent1,4375270:doClear,[(292,154)(292,195)])
link(onEvent2,6728693:doConsoleExec,[])
}

Редактировалось 7 раз(а), последний 2019-04-22 12:04:00
карма: 26

0
Ответов: 233
Рейтинг: 12
#10: 2019-04-22 12:44:15 ЛС | профиль | цитата
Netspirit, Да, напрямую при обращении к Curl.exe работают одиночные команды. А до этого по незнанию я обращался к CMD... Теперь найти бы нормальный Help по командам для консоли. Часть из ихнего хэлпа работает, а часть нет
карма: 2

0
Ответов: 4621
Рейтинг: 746
#11: 2019-04-22 12:52:34 ЛС | профиль | цитата
Проект CURL и документация - актуальны, поэтому если что-то не работает, вероятней всего, "проблемы на вашей стороне".
карма: 26

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