I'm working an application of which only one instance must exist at any given time. There are several possibilities to accomplish this:
- Check running processes for one matching our EXE's name (unreliable)
- Find the main window (unreliable, and I don't always have a main window)
- Create a mutex with a unique name (GUID)
The mutex option seems to me the most reliable and elegant.
However, before my second instance terminates, I want to post a message to the already running instance. For this, I need a handle to the thread (or the process) that owns the mutex.
However, there seems to be no API function to get the creator/owner of a given mutex. Am I just overlooking it? Is there another way to get to this thread/process? Is there another way to go about this?
Update: This guy simply broadcast a message to all running processes. I guess that's possible, but I don't really like it…
Best Answer
This should get you started on the original request to get a process that owns a mutex.
It's in C#, but the Win32 calls are the same.