как делать рестарт программы в Builder

Тема в разделе "Общие вопросы по С и С++", создана пользователем woka, 6 ноя 2010.

Статус темы:
Закрыта.
  1. woka

    woka Гость

    скажите как сделать рестарт программы? пишу в билдере и через MainMenu нажимая на что либо я хочу запускать программу заново!
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Один из способов

    Код (C++):
    WinExec(Application->ExeName.c_str(),SW_SHOW);
    Application->Terminate();
    Добавлено: Второй способ:
    Код (C++):
    ShellExecute(NULL,"open",Application->ExeName.c_str(),NULL,ExtractFilePath(Application->ExeName).c_str(),SW_SHOW);
    Application->Terminate();
    Смысл запускаешь и сразу закываешь первую программу...
    Если в программе есть заставка, то есть смыл запускать с параметром ком. строки, и обрабатываешь показывать ли заставку или нет...
     
  3. woka

    woka Гость

    спасибо помогло однако если будет стоять защита от открытия 2 окон программы это не будет мешать?
     
  4. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Может и мешать... Используй мютекс примерно так...

    Код (C++):
    ShellExecute(NULL,"open",Application->ExeName.c_str(),NULL,ExtractFilePath(Application->ExeName).c_str(),SW_SHOW);
    CreateMutex(NULL,False,"MyMut")
    Application->Terminate();
    А в главной форме что то типо:
    Код (C++):
    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
    try
    {
    Application->Initialize();
    Application->CreateForm(__classid(TForm1), &Form1);
    HANDLE M = CreateMutex(NULL,1,"MyMut");
    WaitForSingleObject(M,-1);
    Application->Run();
    }
    Так точно проблем не возникнит..
     
  5. woka

    woka Гость

    ещё раз спасибо
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей