Вверх ↑
Этот топик читают: Гость
Ответов: 537
Рейтинг: 14
#1: 2019-09-14 17:45:09 ЛС | профиль | цитата
Есть .bat файл для запуска программы с таким содержимым: java -jar "C:\Tera\TeraPrime 4\getdown-1.7.1.jar" "C:\Tera\TeraPrime 4\bin" нужно или запустить этот bat-ник с помощью WinExec, или запустить cmd.exe с такими параметрами. bat-ник запускает программу если открыть его обычным образом, а через WinExec черное окошко мигает на долю секунды и все, если открыть bat-ник через WinExec, тоже ничего не происходит.
Add(Button,8377986,315,245)
{
Left=55
Top=300
link(onClick,15366726:doConsoleExec,[])
}
Add(WinExec,15366726,378,231)
{
FileName="cmd.exe"
Param="java -jar "C:\Tera\TeraPrime 4\getdown-1.7.1.jar" "C:\Tera\TeraPrime 4\bin""
Point(doConsoleExec)
Point(doConsoleInput)
link(Params,412603:Text,[])
}
Add(VisualStrings,412603,385,196)
{
Lines=#81:java -jar "C:\\Tera\\TeraPrime 4\\getdown-1.7.1.jar" "C:\\Tera\\TeraPrime 4\\bin"|
Point(doText)
Point(onText)
}
Add(MainForm,11629800,315,189)
{
Width=409
Height=528
Caption="Ping localhost"
}

В папке C:\Tera\TeraPrime 4\bin находится.jar файл, это программа которая запускается батником

Редактировалось 1 раз(а), последний 2019-09-14 17:57:30
карма: 4

0
vip
#1.1контекстная реклама от партнеров
Ответов: 537
Рейтинг: 14
#2: 2019-09-14 20:30:02 ЛС | профиль | цитата
Вот схема, какую команду передать, чтобы перейти в C:\Windows\system32, CD C:\Windows\system32, не работает, если удастся перейти, может и java -jar "C:\Tera\TeraPrime 4\getdown-1.7.1.jar" "C:\Tera\TeraPrime 4\bin" получится запустить как писал выше.

Add(MainForm,10385931,98,182)
{
Left=20
Top=105
Width=413
Height=499
}
Add(WinExec,6219169,245,217)
{
FileName="cmd.exe "
Point(doConsoleInput)
Point(onConsoleResult)
Point(doConsoleExec)
Point(onConsoleError)
link(onConsoleResult,6776693:doEvent1,[])
link(onConsoleError,6776693:doEvent2,[])
}
Add(Edit,13066046,161,182)
{
Left=5
Top=40
Width=350
Text=""
}
Add(Charset,5379116,329,231)
{
link(onCharset,10701895:doAdd,[])
}
Add(Memo,10701895,392,231)
{
Left=5
Top=90
Width=385
Height=365
Ctl3D=1
ScrollBars=2
}
Add(Button,1666771,98,273)
{
Left=5
Top=10
Width=135
Height=25
Caption="start"
Flat=0
link(onClick,6219169:doConsoleExec,[(219,279)(219,244)])
}
Add(Hub,6776693,294,231)
{
InCount=2
OutCount=1
link(onEvent1,5379116:doCharset,[])
}
Add(FormatStr,11080754,161,231)
{
DataCount=1
Mask="%1\r\n"
link(onFString,6219169:doConsoleInput,[])
link(Str1,13066046:Text,[])
}
Add(Button,14895882,98,231)
{
Left=5
Top=65
Width=135
Height=25
Caption="command"
Flat=0
link(onClick,11080754:doString,[])
}

--- Добавлено в 2019-09-14 20:52:43

Переместится в другой каталог получилось cd /d C:\Windows\system32, а параметр java -jar "C:\Tera\TeraPrime 4\getdown-1.7.1.jar" "C:\Tera\TeraPrime 4\bin" не передается, пишут Синтаксическая ошибка в имени файла, имени папки или метке тома.

Редактировалось 1 раз(а), последний 2019-09-14 20:52:43
карма: 4

0
Ответов: 4612
Рейтинг: 746
#3: 2019-09-16 11:14:18 ЛС | профиль | цитата
"В другой каталог" можно "переместиться" с помощью параметра WinExec.WorkingDir

По первой схеме. Если хочешь запускать с помощью CMD - тогда смотри в мануале по CMD как нужно передавать параметры. В частности, параметры /C и /K. Потренироваться можешь в самом CMD: запускаешь, а в нём вводишь "cmd.exe /C ..." - если получится, значит вызываешь правильно.

Но в этом нет необходимости. Компонент WinExec справится и сам:
Filename=java.exe
Param=-jar "C:\\Tera\\TeraPrime 4\\getdown-1.7.1.jar" "C:\\Tera\TeraPrime 4\\bin"

Обратить внимание на двойные слеши и почитать в справке почему так.
Красным - это параметры передаваемые jar-файлу, согласно мануалу по параметрам вызова java.exe. Если нужен рабочий каталог - использовать WorkingDir.

Редактировалось 1 раз(а), последний 2019-09-16 11:14:41
карма: 26

0
Ответов: 537
Рейтинг: 14
#4: 2019-09-16 11:26:48 ЛС | профиль | цитата
Я сделал по другому, запускаю консоль -> перехожу в нужный каталог cd /d C:\ -> Передаю консоли запуск .bat файла, а в файле параметры какие нужно для запуска
карма: 4

0
Ответов: 4612
Рейтинг: 746
#5: 2019-09-16 11:36:55 ЛС | профиль | цитата
И что мешает реализовать то, что в bat-файле, с помощью WinExec?
Если есть проблемы с рабочим каталогом - перед запуском можно попробовать точку doCurrentDir компонента Dir.

Редактировалось 2 раз(а), последний 2019-09-16 11:38:22
карма: 26

0
Ответов: 537
Рейтинг: 14
#6: 2019-09-16 11:41:40 ЛС | профиль | цитата
Запустил через WinExec, все работает, спасибо
Add(MainForm,2953706,91,105)
{
link(onActivate,6219169:doConsoleExec,[])
}
Add(WinExec,6219169,147,91)
{
FileName="java.exe"
Param="-jar "C:\\Files\\getdown.jar" "C:\\Files\\bin""
Point(doConsoleExec)
Point(doConsoleInput)
Point(onConsoleResult)
}

Редактировалось 1 раз(а), последний 2019-09-16 11:44:08
карма: 4

0
Ответов: 4612
Рейтинг: 746
#7: 2019-09-16 12:11:24 ЛС | профиль | цитата
Использование события MainForm.onActivate, полагаю, не то, что тебе нужно. Так как событие срабатывает много раз на протяжении работы программы. Используй onCreate.
Чтобы Java не показывала черное окно консоли - можно вместо java.exe использовать javaw.exe и метод WinExec.doExec вместо doConsoleExec (есть нюансы). Кроме того, скрыть окно консоли можно свойством Mode.

Редактировалось 3 раз(а), последний 2019-09-16 12:16:33
карма: 26

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