Zablokowanie uruchomienia kopii programu

Aby zabronić użytkownikowi uruchomienia kopii aplikacji, tzn. aby nie można było uruchomić aplikacji, gdy już wcześniej ją uruchomiono i aktualnie jest włączona:

Unit1.cpp

void __fastcall TForm1::FormCreate(TObject *Sender)
{
   THandle Semaphore;
   Semaphore = (int)CreateSemaphore(NULL, 0, 1, "Project1.exe");
   if ((Semaphore != 0) && (GetLastError() == ERROR_ALREADY_EXISTS))
   {
      CloseHandle((void*)Semaphore);
      ShowMessage("Ten program jest już uruchomiony!");
      Application->Terminate();
   }
}