2010-12-28 18 views
3

Ich schreibe ein Kontakt-Management-Programm. Ich weiß, wie man Befehlszeilenargumente liest und verschiedene Methoden basierend auf dem, was ich finde, ausführt.Wie kann ich Befehlszeilenargumente an einen bereits laufenden Prozess übergeben?

Zum Beispiel program.exe "John Doe" werden eine neue Instanz des Programms starten und den ersten Kontakt öffnen, es John Doe genannt findet, program.exe -s John wird eine neue Instanz des Programms starten und für Kontakte mit dem Namen suchen „John“, während nur program.exe läuft öffnet eine neue Instanz des Programms mit einem leeren Suchbildschirm.

Ich möchte jedoch nur eine einzelne Instanz des Programms ausführen. Wenn also ein anderes Programm program.exe "John Doe" aufruft, werden die Argumente an diesen Prozess übergeben, wenn bereits ein Prozess ausgeführt wird, und zu einer neuen Suche wechseln, anstatt ein neues Fenster zu öffnen.

Ich weiß, dass dies die Suche nach zuvor ausgeführten Prozessen und Interprozesskommunikation erfordert, aber ich habe nicht viel von .Net getan und habe Probleme, in die richtige Richtung zu starten oder gute Tutorials zu dem jeweiligen Thema zu finden .

+1

Haben Sie „eigenen“ program.exe, oder es an einen Dritten gehört? –

+0

'Programm.exe' ist das Programm, das ich schreibe. Es hat einfach noch keinen Namen. Also ja, ich besitze es. – dlras2

+1

Duplizieren? http://stackoverflow.com/questions/917883/c-how-to-single-instance-application-that-accepts-new-parameters –

Antwort

1

Eine Möglichkeit, es zu tun wäre, um einen WCF-Dienst zu haben program.exe Host (wie Sie von Ihrem Tag erraten zu haben scheinen). Wenn dann eine andere Instanz mit Befehlszeilenargumenten gestartet wird, handelt es sich um einen WCF-Client für diesen Dienst, der die Argumente an den Dienst sendet und dann beendet.

Verwandte Themen