Puedes controlar que no existan dos ventanas con el mismo nombre de clase. Para ello, tienes que cambiar el nombre de la clase del formulario principal de tu aplicación, redefiniendo el método CreateParams. En el Form1.h haces:void __fastcall CreateParams (TCreateParams &Params);
y en el Form1.cpp escribes:
void __fastcall TForm1::CreateParams (TCreateParams &Params)
{
TForm::CreateParams(Params);
strcpy (Params.WinClassName,
"NombreForm");
}
Luego, en el código del proyecto, controlas que no haya un formulario con ese nombre de clase antes de ejecutar la aplicación:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
if (FindWindow("NombreForm",NULL))
ShowMessage(
"Este programa ya está ejecutándose, y no se permite más de una "
"instancia de la aplicación al mismo tiempo.");
else
{
Application->Initialize();
Application->Title = "Titulo";
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
Espero que te sirva de ayuda.