• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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