Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск и остановка внешнего BAT файла, запуск BAT файла 
V
    Опции темы
XPyCT
Дата 11.9.2008, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



всем участникам форума привет!

есть Java Эмулятор игрового сервера! имя ему Linеage

запуск  сервера происходит путем запуска по очереди двух батников
1. SartLoginserve.bat
2. StartGameserver.bat


содержимое SartLoginserve.bat
Код

@echo off
title Login Server Console
:start
echo Starting L2J Login Server.
echo.
java -Xmx128m  -cp ./../libs/*;l2jserver.jar net.sf.l2j.loginserver.L2LoginServer
if ERRORLEVEL 2 goto restart
if ERRORLEVEL 1 goto error
goto end
:restart
echo.
echo Admin Restart ...
echo.
goto start
:error
echo.
echo Server terminated abnormaly
echo.
:end
echo.
echo server terminated
echo.
pause



пытаюсь программно запустить этот логин сервер

таким макаром

Код


//глобальные переменные
STARTUPINFO cif1;
PROCESS_INFORMATION  pi1;

//клик по кнопке запуск
ZeroMemory(&cif1,sizeof(STARTUPINFO));
CreateProcess(NULL,Memo1->Lines->Strings[0].c_str(),NULL,NULL,FALSE,NULL,NULL,NULL,&cif1,&pi1);



код на остановку
Код

TerminateProcess(pi1.hProcess,NO_ERROR);


вот что он мне выдает


Код

Starting L2J Login Server.

Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/l2j/loginserve
r/L2LoginServer
Caused by: java.lang.ClassNotFoundException: net.sf.l2j.loginserver.L2LoginServe
r
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Server terminated abnormaly


server terminated

Для продолжения нажмите любую клавишу . . .



если запускать сервер в ручную тогда все проходит нормально

если кто знает как решить эту проблему - прошу помощи

за содействие отдельное спс mrBroks

вопрос пока открыт


Это сообщение отредактировал(а) XPyCT - 11.9.2008, 11:36
PM MAIL Skype   Вверх
HappyLife
Дата 11.9.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 4
Всего: 8



XPyCT, А ты в качества файла в CreateProcess указываешь bat файл? Попробуй указывать CMD, а вот в качества параметра указать BAT.
PM MAIL   Вверх
XPyCT
Дата 11.9.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



такой метод приводит к такому же результату
ShellExecute(0,NULL,"D:/server/Kamael/login/startLoginServer.bat",NULL,NULL,3) ;

Добавлено через 33 секунды
Цитата(HappyLife @  11.9.2008,  12:50 Найти цитируемый пост)
XPyCT, А ты в качества файла в CreateProcess указываешь bat файл? Попробуй указывать CMD, а вот в качества параметра указать BAT.

щас попробую

PM MAIL Skype   Вверх
XPyCT
Дата 11.9.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



не не помогло!
так запускае  cmd окно!
Код

ZeroMemory(&cif1,sizeof(STARTUPINFO));
CreateProcess("D:/server/Kamael/login/startLoginServer.bat","cmd.exe",NULL,NULL,FALSE,NULL,NULL,NULL,&cif1,&pi1);

а так вообще не запускает просто молчит и все
Код

ZeroMemory(&cif1,sizeof(STARTUPINFO));
CreateProcess("cmd.exe","D:/server/Kamael/login/startLoginServer.bat",NULL,NULL,FALSE,NULL,NULL,NULL,&cif1,&pi1);

PM MAIL Skype   Вверх
586
Дата 11.9.2008, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



тестируй
Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    char cmd[] = "cmd.exe /с D:/server/Kamael/login/startLoginServer.bat";

    memset(&si, 0, sizeof(si));

    if(CreateProcess(0, cmd,
        NULL,NULL,FALSE,NULL,NULL, "D:/server/Kamael/login",&si,&pi))
    {
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
    }
}

PM   Вверх
XPyCT
Дата 11.9.2008, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



586 вот что в окне выдало
Код

"amael" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

D:\server\Kamael\login>




вот так еще сделал
Код


char cmd[] = "cmd.exe /n D://server//kamael//login//startLoginServer.bat";
    memset(&si, 0, sizeof(si));
    if(CreateProcess(0, cmd,
        NULL,NULL,FALSE,NULL,NULL, "D://server//Kamael//login",&si,&pi))
    {
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
    }


тоже самое


Это сообщение отредактировал(а) XPyCT - 11.9.2008, 15:34
PM MAIL Skype   Вверх
mrbrooks
Дата 11.9.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



586,  комрад пути видимо идут с \\  smile 

Это сообщение отредактировал(а) mrbrooks - 11.9.2008, 15:31
PM MAIL   Вверх
XPyCT
Дата 11.9.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



вобщем решил вот так
в массив чар не нужно писать путь полный

Код

char cmd[] = "cmd.exe /c startLoginServer.bat";
    memset(&si, 0, sizeof(si));
    if(CreateProcess(0, cmd,
        NULL,NULL,FALSE,NULL,NULL, "D:\\server\\Kamael\\login",&si,&pi))
    {
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
    }


всем спс!
тема закрыта соответственно в репу


Это сообщение отредактировал(а) XPyCT - 11.9.2008, 15:57
PM MAIL Skype   Вверх
Alca
Дата 11.9.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



1. Что возвращает GetLastError()?
2. А если батник лежит в другом каталоге?
3. Если в пути встречаются пробелы то надо брать в ковычки:
Код

char cmd[] = "cmd.exe /c \"D://server foder//kamael//login//startLoginServer.bat\"";


Это сообщение отредактировал(а) Alca - 11.9.2008, 16:52


--------------------
PM WWW ICQ Skype Jabber   Вверх
XPyCT
Дата 11.9.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Цитата(Alca @ 11.9.2008,  16:39)
1. Что возвращает GetLastError()?
2. А если батник лежит в другом каталоге?
3. Если в пути встречаются пробелы то надо брать в ковычки:
Код

char cmd[] = "cmd.exe /c \"D://server foder//kamael//login//startLoginServer.bat\"";

вот именно так и не работает
char cmd[] = "cmd.exe /c \"D://server foder//kamael//login//startLoginServer.bat\"";

а так работает
char cmd[] = "cmd.exe /c startLoginServer.bat";
PM MAIL Skype   Вверх
XPyCT
Дата 11.9.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



блин вот поторопился радоватся! 
как теперь это закрыть- остановить?

этот код на вырубание уже не пашет
Код

TerminateProcess(pi.hProcess,NO_ERROR);


Это сообщение отредактировал(а) XPyCT - 11.9.2008, 19:55
PM MAIL Skype   Вверх
586
Дата 11.9.2008, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Цитата(mrbrooks @  11.9.2008,  16:28 Найти цитируемый пост)
пути видимо идут с \\

И с '/' может работать. Просто я оставил "стилистику" автора.

Цитата(XPyCT @  11.9.2008,  19:50 Найти цитируемый пост)
char cmd[] = "cmd.exe /c \"D://server foder//kamael//login//startLoginServer.bat\"";

XPyCT, нужно ставить обратные слэши - char cmd[] = "cmd.exe /c \"D:\\server foder\\kamael\\login\\startLoginServer.bat\"";
Твой путь хоть и рабочий, но не правильный.

Цитата(XPyCT @  11.9.2008,  20:55 Найти цитируемый пост)
как теперь это закрыть- остановить?

этот код на вырубание уже не пашет
Код
TerminateProcess(pi.hProcess,NO_ERROR);

Возможно, дескриптор был закрыт функцией CloseHandle.
Вызывай CloseHandle после TerminateProcess а не перед.

PS: TerminateProcess - зло. Я бы задумался о других вариантах. К тому же, процесс java.exe не завершится.

Это сообщение отредактировал(а) 586 - 11.9.2008, 21:26
PM   Вверх
XPyCT
Дата 12.9.2008, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



586!
плз покажи пример как закрыть
вообще уже башка суппер в квадрате ))) и день и ночь!
с меня 100гр и пончик(в виде репы)   smile 
PM MAIL Skype   Вверх
mrbrooks
Дата 12.9.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



XPyCT
Код

        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);

PM MAIL   Вверх
XPyCT
Дата 12.9.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Цитата
"cmd.exe /c \"D:\\server foder\\kamael\\login\\startLoginServer.bat\"";

не работает так просто мельком проскакивает и все

mrbrooks
по поводу закрытия пишет
Код

External exception c0000008




Это сообщение отредактировал(а) XPyCT - 12.9.2008, 11:56
PM MAIL Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.