Uses Mutex Objects to track multiple instances of the same .EXE. A Mutex object is an interprocess synchronization object whose state is set to signaled when it is not owned by any thread, and nonsignaled when it is owned. Only one thread at a time can own a mutex. Use of mutex objects makes possible batch processing and other synchronous tasks, from concurrent instances of the same application.
Assumes
The MAX_INSTANCES limitation is artifically imposed. I find it useful; you may, of course, remove it.