.. but whith muutexes you have to decide how many instances can be started - at design time.
Uh, no. A
Mutex is based on a name, a string, and strings can be built at runtime. Example from one of my projects where the
mutex name is based on a concatenation of several strings:
hMutex:= CreateMutex(nil, True, PRODUCTNAME + PRODUCTNAME + PRODUCTCOPYRIGHT);
Using usernames and an appended counter instead is trivial. Reading the information that user A can start the application X times and user B can start it only once is trivial, too (Registry, INI,
XML, whatever). Use that in conjunction with a for-loop that tries to create mutexes until either all of them already exist, or the maximum allowed instances are reached, and you have reached your goal.
Regards
Dalai