Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

  • Главная
  • FAQ
  • Как запретить повторный запуск программы?

Как запретить повторный запуск программы?

CuBook05

Рассмотрим два способа запрета повторного запуска программы.
 
1. Модификация файла Project1.cpp.
Чтобы при повторном запуске программы она не запускалась и выдавала сообщение, необходимо сделать некоторые изменения с файлом Project1.cpp. Открываем этот файл и находим следующий код:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
  {
  Application->Initialize();
  Application->CreateForm(__classid(TForm1), &Form1);
  Application->Run();
  }
catch (Exception &exception)
  {
  Application->ShowException(&exception);
  }
catch (...)
  {
 try
   {
   throw Exception("");
   }
  catch (Exception &exception)
   {
  Application->ShowException(&exception);
  }
 }
return 0;
}
И заменяем его на этот:
#include <vcl.h>
#pragma hdrstop
USERES("Project1.res");
USEFORM("Unit1.cpp", Form1);
const char *NamedMutex= "OneOnly";
HANDLE CheckInstance(const char *Name)
{
HANDLE Mutex = CreateMutex(NULL, true,Name);
int er = GetLastError();
if (er) return 0;
return Mutex;
}
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HANDLE Mutex = CheckInstance(NamedMutex);
if (!Mutex)
{
ShowMessage("Программа уже запущена!");
ReleaseMutex(Mutex);
return 1;
}
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
2. С помощью функции.
В конце файла Unit1.h перед #endif пропишем следующую функцию:
BOOL WeAreAlone(LPSTR szName)
{
HANDLE hMutex=CreateMutex(NULL,TRUE,szName);
if (GetLastError()==ERROR_ALREADY_EXISTS)
  {
  CloseHandle(hMutex);
  return false;
  }
return true;
}
Теперь для формы CreatForm пропишим проверку условия на запуск программы:
if (WeAreAlone("Some_Unique_Name_Or_Other"));
else
{
ShowMessage("Программа уже запущена!");
exit(0);
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий