• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы woka
  • Дата начала
Статус
Закрыто для дальнейших ответов.
W

woka

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

DarkKnight

Один из способов

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();
Смысл запускаешь и сразу закываешь первую программу...
Если в программе есть заставка, то есть смыл запускать с параметром ком. строки, и обрабатываешь показывать ли заставку или нет...
 
W

woka

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

DarkKnight

Может и мешать... Используй мютекс примерно так...

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();
}
Так точно проблем не возникнит..
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!