Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Запуск bin файла с нужными параметрами


Автор: XPyCT 24.1.2010, 18:06
Здравствуйте ув участники форма!

есть игровой клиент для онлайн игры Айон

наши умельцы запускают его вот таким макаром, создавая бат файл со следующим содержимым

Код

start bin32\aion.bin -ip:127.0.0.1 -port:2106 -cc:7 -lang:Rus -noauthgg -noweb


Внимание вопрос!  smile 

как запустить тот же aion.bin с нужными параметрами (Ip Adres, port...) без использования бат файла!

ps: лично я его тоже запускаю ток своим методом  программно создаю бат файл, запускаю и через определенный интервал удаляю

вот пример содержимого ini файла
Код

[Instance]
ip=127.0.0.1
web=http://87.248.178.149/index.html
rez=194.146.135.218



Код

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 cPatch=ExtractFilePath(Application->ExeName)+ "bin32\\inition.ini";
    if(!FileExists(cPatch))
        {
            ShowMessage("тут я рассказываю людям что у них нема файла  с данными для коннекта");
        }
        else
        {
           //Sozdanie obiekta Ini
           Ini = new TIniFile(cPatch);
           cIP=Ini->ReadString("Instance", "ip", cIP);
           cWeb= Ini->ReadString("Instance", "web", cWeb);
           //:::::::::::::::::::::::::::::::::::::::::::::::
           String tmp="start bin32\\aion.bin -ip:"+cIP+" -port:2106 -cc:7 -lang:Rus -noauthgg -noweb";
           TStringList* Stroka =new TStringList;
           Stroka->Clear();
           Stroka->Add(tmp);
           Stroka->SaveToFile("start.bat");

           delete Stroka;

        }
}
//---------------------------------------------------------------------------


void __fastcall TForm1::btConnectClick(TObject *Sender)
{

   ExecBat =ExtractFilePath(Application->ExeName);
   //ShowMessage(ExecBat);

   char *p=new char[ExecBat.Length()];
   strcpy(p,ExecBat.c_str());



   char cmd[] = "cmd.exe /c start.bat";
    memset(&si, 0, sizeof(si));
    if(CreateProcess(0, cmd,
        NULL,NULL,FALSE,NULL,NULL, p,&si,&pi))
    {
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
    }
    CloseFlag = !(CloseFlag);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{

if(CloseFlag)
  {
   DeleteFile("start.bat");
   Close();
  }

}
//---------------------------------------------------------------------------
 

рад услышать ваши советы или наработки если есть

Автор: 586 24.1.2010, 18:22
С помощью CreateProcess можно запустить файл с любым расширением. Не вижу смысла делать bat-файл.
Код
char cmd[] = "bin32\\aion.bin -ip:127.0.0.1 -port:2106 -cc:7 -lang:Rus -noauthgg -noweb";
CreateProcess(0, cmd,
        NULL,NULL,FALSE,NULL,NULL, p,&si,&pi);

Автор: XPyCT 24.1.2010, 18:29
Спасибо! + нажат!
А я побежал пробовать!

Добавлено @ 18:35
вопрос не подскажете что за параметр "p" или переменная (какого типа) 

 p,&si,&pi); 


Код
[C++ Error] Unit1.cpp(25): E2451 Undefined symbol 'p'

Автор: XPyCT 24.1.2010, 18:46
В общем  0 заменил на NULL и p  тоже заменил на NULL   заработало!

вопрос про p остается в силе

Автор: 586 24.1.2010, 19:00
Цитата(XPyCT @  24.1.2010,  18:29 Найти цитируемый пост)
вопрос не подскажете что за параметр "p" или переменная (какого типа) 

текущая папка
Код
BOOL WINAPI CreateProcess(
  __in_opt     LPCTSTR lpApplicationName,
  __inout_opt  LPTSTR lpCommandLine,
  __in_opt     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  __in_opt     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  __in         BOOL bInheritHandles,
  __in         DWORD dwCreationFlags,
  __in_opt     LPVOID lpEnvironment,
  __in_opt     LPCTSTR lpCurrentDirectory,
  __in         LPSTARTUPINFO lpStartupInfo,
  __out        LPPROCESS_INFORMATION lpProcessInformation
);

Автор: XPyCT 24.1.2010, 19:52
спс вопрос закрыт

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)