Win32: Wie man den Prozess/thread, der Besitzer eines mutex?

Arbeite ich eine Anwendung nur eine Instanz existieren muss, zu einem bestimmten Zeitpunkt. Es gibt mehrere Möglichkeiten, dies zu erreichen:

  • Überprüfen Sie die Laufenden Prozesse für Sie eine passende unserer EXE-name (unzuverlässig)
  • Finden Sie die wichtigsten Fenster (unzuverlässig, und ich nicht immer ein Hauptfenster)
  • Erstellen Sie einen mutex mit einem eindeutigen Namen (GUID)

Den mutex option scheint mir die zuverlässigsten und elegant.

Jedoch, vor meinem zweiten Instanz beendet wird, möchte ich um eine Nachricht an die bereits laufende Instanz. Für diese, ich brauche einen handle für den thread (oder Prozess), die Eigentümer des mutex.

Jedoch, scheint es keine API-Funktion, um die Ersteller/Besitzer einer bestimmten mutex. Ich bin einfach auf ihn blicken? Gibt es einen anderen Weg, um zu diesem thread/Prozess? Gibt es einen anderen Weg zu gehen über diese?

Update: Dieser Kerl einfach eine broadcast-Nachricht an alle Laufenden Prozesse. Ich denke, das ist möglich, aber ich weiß nicht wirklich, wie es...

  • Doppelte? stackoverflow.com/questions/19147/...
  • Nicht wirklich. Keine der Antworten sagt mir, wie man den Prozess zu behandeln.
  • Hier ist eine doppelte, obwohl es wurde nie beantwortet: stackoverflow.com/questions/541477/...
  • Gut, es beantwortet wurde, aber wahrscheinlich nicht in der Art und Weise der Fragesteller gehofft, es würde sein 🙂
  • Ich würde nicht sagen, dass ein exaktes Duplikat entweder, obwohl Sie die Antwort auf meine primäre Frage, ist es nicht bieten eine alternative Lösung-etwas, das ich explizit danach gefragt.
  • Nicht setzen das als Antwort (da keine Antwort), aber es kann von Interesse sein: msdn.microsoft.com/en-us/library/aa446629%28VS.85%29.aspx zeigt, wie der Eigentümer (im Sinne der user) eine Datei sperren, und konnte Sie dieselbe zu einem mutex. Noch nicht geben Sie eine PID, obwohl.

InformationsquelleAutor Thomas | 2009-12-22
Schreibe einen Kommentar