NeoGriever: Single-Instance Anwendung - Kommandozeilenparamter an bereits geöffnete Anwendung senden

Hallo.

Ich habe ein recht umfangreiches Programm geschrieben. Jetzt habe ich inzwischen auch ein Protokoll (wie z. b. mailto:// oder file://) angelegt, auf welches mein Programm reagiert.

Jetzt möchte ich natürlich, dass, wenn dieser Link geöffnet wird, eben nicht jedesmal ein neues Fenster geöffnet wird, sondern geprüft wird, ob das Programm bereits läuft und wenn ja, die Kommandozeile an das bereits existierende Programm gesendet wird. Von mir aus auch an eine extra dafür angelegte Funktion.

Kann mir da jemand helfen?

Ich habe schon etwas über Mutex gelesen. Ich bin mir auch sicher, dass dies das Single-Instance-Problem in einer der beiden Punkte löst. Jedoch weiß ich nicht, wie ich dann ein Kommando an das bereits offene Programm schicke.

Info: Ich benutze .net 2.0 und Sharp Develop 2

  1. Tach,

    Ich habe schon etwas über Mutex gelesen.

    damit kannst du sicherstellen, dass nur eine Instanz läuft.

    Ich bin mir auch sicher, dass dies das Single-Instance-Problem in einer der beiden Punkte löst. Jedoch weiß ich nicht, wie ich dann ein Kommando an das bereits offene Programm schicke. Info: Ich benutze .net 2.0 und Sharp Develop 2

    IPC, was da die richtige Variante für .net ist, habe ich allerdings keine Ahnung.

    mfg
    Woodfighter

    1. Leider komme ich damit nicht weiter.

      Das ist zwar ein guter Ansatz, jedoch unter .net 2.0 nicht möglich, da dort Named Pipes nicht implementiert sind. Die gibt es erst in 3.5 und höher. Und aufstocken kann ich das wirklich gewaltige Projekt nicht. Das habe ich bereits einmal versucht und selbst nach der Korrektur aller inkompatibilitäten funktionierte mein Programm nicht mehr.

      Gibt es alternative Single-Instance-Varianten, wo man evtl auf die Form des bereits offenen Prozesses zugreifen kann?

      Wär schon genial.

      1. Tach,

        Das ist zwar ein guter Ansatz, jedoch unter .net 2.0 nicht möglich, da dort Named Pipes nicht implementiert sind.

        an Named Pipes hätte ich auch nicht gedacht, eher an COM oder MPI (ok, eigentlich an D-BUS, aber das passt nicht zum Anwendungsfall), aber ersteres ist in .net meines Wissens durch was anderes ersetzt worden.

        mfg
        Woodfighter

        1. Ideal wär für mich ein verständliches, nicht zu überladenes und nicht zu kauderwelschisches beispiel. Leider gibt es nur extrem unübersichtliche komplizierte anleitungen, wo die code-beispiele nur in visual studio 2010 funktionieren ...