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

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

woka

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

DarkKnight

Well-known member
01.08.2010
653
0
#2
Один из способов

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

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

DarkKnight

Well-known member
01.08.2010
653
0
#4
Может и мешать... Используй мютекс примерно так...

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