Question and Answer Database FAQ3816C.txt Preventing multiple instances with BCB Category :Windows API Platform :Win95/NT Product : All32Bit Question: I want to permit only one copy of my program to run at a time. The Previous Instance is always set to NULL, yet it is supposed to be NULL only the first time you run the program. Answer: This is a code example of using a Mutex to determine if another instance is running. ::CreateMutex(NULL, FALSE, "YourMutexName"); if ( GetlastError() == ERROR_ALREADY_EXISTS ) { // Found another running application with the same mutex // so one instance is already running. Application->Title="Testing"; // prohibits finding this instance HWND FirsthWnd, FirstChildhWnd; // see Application->Title or Options|Project|Application Tab|Title FirsthWnd = ::FindWindow("TApplication", "YourApplicationTitle"); if (::IsIconic(FirsthWnd)) ::ShowWindow(FirsthWnd, SW_SHOWDEFAULT); ::SetForegroundWindow(FirsthWnd); FirstChildhWnd = ::GetLastActivePopup(FirsthWnd); if (FirsthWnd != FirstChildhWnd) ::BringWindowToTop(FirstChildhWnd); // A pop-up is active so bring it to the top too. } else { Application->Initialize(); Application->Title = "YourApplicationTitle"; Application->CreateForm(__classid(TYourAppMainForm),&YourAppMainForm); } 12/30/99
Last Modified: 01-SEP-99