Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2012, 22:52   #1
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию Вопрос о запуске через делфи.

Здравствуйте уважаемые программисты и любители.

У меня возник вопрос.

Имею login.bat файл с содержанием
Код:
@echo off
title Server Console
:start


REM -------------------------------------
REM Default parameters for a basic server.
REM -------------------------------------

java -Xmx32m -XX:+UseParallelGC -XX:+AggressiveOpts -XX:ParallelGCThreads=2 -XX:MaxPermSize=68m -cp ./lib/*; com.it.br.server.Server

if ERRORLEVEL 1 goto error
goto exit
:error
echo ErrorLevel = 1 (error), please read log
:exit
pause
exit
Данный batник запускает сервер.
У меня вопрос как можно по средствам делфи запустить его.

Когда Я пользуюсь стандартным кодом запуска
Код:
ShellExecute(Handle, 'open',  'server\Login.bat', nil, nil, SW_SHOWNORMAL);
То Вылатает такая ошибка

Код:
Error: Could not find or load main class com.it.br.server.Server
ErrorLevel = 1 (error), please read log
Для продолжения нажмите любую клавишу . . .
Если Я запускаю курсором сам файл login.bat, запускается всё нормально.

Подкиньте пожалуйста варианты кода который сможет запустить полноценно данный файл.

Раньше (2 года назад) у меня был код который запускал этот батник нормально, но вот не углядел и потерял код.

Последний раз редактировалось Jleksern; 15.11.2012 в 22:55.
Jleksern вне форума Ответить с цитированием
Старый 15.11.2012, 23:05   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Вы не указали рабочую папку, откуда будет запущен bat.
Подробнее: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Человек_Борща вне форума Ответить с цитированием
Старый 15.11.2012, 23:13   #3
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Вы не указали рабочую папку, откуда будет запущен bat.
Подробнее: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Боюсь не имеет большого значения.
Но Я думаю Вы не даром спросили...
I:\Documents and Settings\XXX\Рабочий стол\Project\Login\login.bat
В папке Project находиться проект Delphi, дальше в папке login храниться сам батник который будет запущен.

По моей памяти помню что нужный мне код был в одну строчку.
Нашел его на просторах интернета, а сейчас хоть убей не могу найти.

З.Ы. ShellExecute я написал заранее чтоб Вы знали какая будет ошибка. Предыдущий код не на ShellExecute начинался 1оо%

Последний раз редактировалось Jleksern; 15.11.2012 в 23:19.
Jleksern вне форума Ответить с цитированием
Старый 15.11.2012, 23:20   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Я вам дал ссылку, и вы даже не зашли. Пичально.
Подсказка: lpDirectory
Человек_Борща вне форума Ответить с цитированием
Старый 15.11.2012, 23:44   #5
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Я перешел по вашей ссылки, но с английским чтением у меня явная проблема.

А вот с Ваша подсказка была мне помогла обнаружить в поиске такой код, который я адаптировал под себя.

В итоге нашел получилось вот такое...
Код:
Var
ShExecInfo:TShellExecuteInfo;
input:string;
begin
input:='Login/Login.bat' ;
ShExecInfo.cbSize := SizeOf (TShellExecuteInfo);
         ShExecInfo.fMask := 0;
         ShExecInfo.Wnd := 0;
         ShExecInfo.lpVerb :=nil;
         ShExecInfo.lpFile := Pchar (input);
         ShExecInfo.lpParameters := nil;
         ShExecInfo.lpDirectory := nil;
         ShExecInfo.nShow := SW_MAXIMIZE;
         ShExecInfo.hInstApp := 0;
ShellExecuteEx(@ShExecInfo);
При запуске в batнике пишется
Код:
Error: Could not find or load main class com.it.br.server.Server
ErrorLevel = 1 (error), please read log
Для продолжения нажмите любую клавишу . . .
Проще говоря, если Вашу подсказку Я понял правильно, то в открытии файла не наступило.
Прежняя ошибка.
Знаю есть и другие способы запустить файл кроме ShellExecute, но не знаю какие и какой подойдет мне должен помочь.
По этому прошу у Вас помощи.
Jleksern вне форума Ответить с цитированием
Старый 15.11.2012, 23:49   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Код:
HINSTANCE ShellExecute(
  _In_opt_  HWND hwnd,
  _In_opt_  LPCTSTR lpOperation,
  _In_      LPCTSTR lpFile,
  _In_opt_  LPCTSTR lpParameters,
  _In_opt_  LPCTSTR lpDirectory,
  _In_      INT nShowCmd
);
lpDirectory, - место, откуда запускается lpFile

У вас оно nil а значит из папки %system32% и там нет
Цитата:
Could not find or load main class com.it.br.server.Server
В вашем случае надо указать папку JS машины.
Человек_Борща вне форума Ответить с цитированием
Старый 15.11.2012, 23:54   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я бы все таки попробовал в ShellExecute задать полный путь батника и следующим параметром полный путь к рабочей папке.
Цитата:
Боюсь не имеет большого значения.
В папке Project находиться проект Delphi, дальше в папке login храниться сам батник который будет запущен.
Откуда уверенность, что текущий каталог будет соответствовать каталогу, из которого запущена программа? Много вариантов, что это будет не так. Попробуйте, попытка не пытка Да и ошибка кричит, что не может найти сервер
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 15.11.2012 в 23:58.
Аватар вне форума Ответить с цитированием
Старый 16.11.2012, 00:14   #8
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Всё решил...
Спасибо всем большое без Вас бы не получилось.

На будущее если у кого-то будут подобные проблемы.
Вот этот код работает как стрелки на Биг Бене.

Код:
ShellExecute(Application.mainform.Handle, Pchar('open'), Pchar('login.bat'), nil, Pchar('Login'),SW_SHOWMINIMIZED);
Jleksern вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свернуть програму при запуске через PI.dwProcessId Человек_Борща Общие вопросы Delphi 4 22.09.2010 11:03
Проблема найти путь к винде при запуске программы через удаленный рабочий стол grenles Общие вопросы Delphi 4 12.04.2009 23:29
В окне делфи форма с элементами есть, а при запуске элементы исчезают lenant Помощь студентам 8 29.05.2008 15:44