例えば、次のようにします。
//--------------------------------------------------------------------------- // Project1.cpp //--------------------------------------------------------------------------- namespace { //--------------------------------------------------------------------------- // 多重起動防止用ミューテックスの名前 const AnsiString AppInstanceLockName = "ExampleAuthor.ExampleApplication.AppInstanceLock"; // 最初のアプリケーションインスタンスに設定するプロパティの名前 const AnsiString AppInstanceMarkName = "ExampleAuthor.ExampleApplication.AppInstanceMark"; void __fastcall EnsureSingleAppInstance(); BOOL CALLBACK SetFirstAppInstanceForeground(HWND hwnd, LPARAM lParam); //--------------------------------------------------------------------------- // 多重起動を防止する。もし既にインスタンスがあれば、それを最前面に置く。 void __fastcall EnsureSingleAppInstance() { ::SetLastError(NO_ERROR); HANDLE instanceLock = ::CreateMutex(NULL, true, AppInstanceLockName.c_str()); if(instanceLock == NULL || ::GetLastError() != NO_ERROR) { ::EnumWindows(reinterpret_cast<WNDENUMPROC>(SetAppFirstInstanceForeground), NULL); Abort(); } if(!::SetProp(Application->Handle, AppInstanceMarkName.c_str(), reinterpret_cast<HANDLE>(1))) { Abort(); } } //--------------------------------------------------------------------------- // コールバック関数。多重起動防止後、最初のインスタンスを最前面に置く。lParam // は使用しない。 BOOL CALLBACK SetFirstAppInstanceForeground(HWND hwnd, LPARAM lParam) { if(::GetProp(hwnd, AppInstanceMarkName.c_str()) != NULL) { ::SetForegroundWindow(hwnd); } return true; } //--------------------------------------------------------------------------- } // End of namespace //--------------------------------------------------------------------------- // ... //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { EnsureSingleAppInstance(); Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch(EAbort& e) { // Do nothing } catch (Exception &exception) { // ... } catch (...) { // ... } return 0; } //---------------------------------------------------------------------------