C-Sharp Commandline Argumente zur Laufzeit entgegen nehmen
Hallo @ All
Ich stehe wieder mal am Schlauch bzw. finde keine entsprechende Lösung und hoffe auf eure Hilfe! Für entsprechende Ansätze/Hinweise wäre ich dankbar!
Was möchte ich tun?
Eine laufende C# WPF Anwendung soll zur Laufzeit Commandline-Argumente entgegen nehmen. Z.B. irgend einen Text und diesen in der View anzeigen
Bisher habe ich nur Beispiele gefunden die zum StartUp Argumente entgegen nehmen. Das ist aber nicht das Problem. Ich brauche etwas das wirklich zur Laufzeit passiert ohne dass die App geschlossen und wieder neu aufgebaut wird.
BSP:
1) MeineApp.exe läuft
2) Nun starte ich ein ConsoleWindow und gebe ein MeineApp.exe DOING="irgend was"
In meineApp.exe wird der Text in einer View (RichTextBox, TExtBlock,...) angezeigt und in die nächste freie Zeile gesprungen. Etwa so wie bei CMTrace.exe (LogFiles lesen während sie geschrieben werden)
3) Schritt 2 lässt sich beliebig oft wiederholen
Vielen Dank für eure Hilfe!
Beste Grüße!
Mayho
Ich stehe wieder mal am Schlauch bzw. finde keine entsprechende Lösung und hoffe auf eure Hilfe! Für entsprechende Ansätze/Hinweise wäre ich dankbar!
Was möchte ich tun?
Eine laufende C# WPF Anwendung soll zur Laufzeit Commandline-Argumente entgegen nehmen. Z.B. irgend einen Text und diesen in der View anzeigen
Bisher habe ich nur Beispiele gefunden die zum StartUp Argumente entgegen nehmen. Das ist aber nicht das Problem. Ich brauche etwas das wirklich zur Laufzeit passiert ohne dass die App geschlossen und wieder neu aufgebaut wird.
BSP:
1) MeineApp.exe läuft
2) Nun starte ich ein ConsoleWindow und gebe ein MeineApp.exe DOING="irgend was"
In meineApp.exe wird der Text in einer View (RichTextBox, TExtBlock,...) angezeigt und in die nächste freie Zeile gesprungen. Etwa so wie bei CMTrace.exe (LogFiles lesen während sie geschrieben werden)
3) Schritt 2 lässt sich beliebig oft wiederholen
Vielen Dank für eure Hilfe!
Beste Grüße!
Mayho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 419239
Url: https://administrator.de/forum/c-sharp-commandline-argumente-zur-laufzeit-entgegen-nehmen-419239.html
Ausgedruckt am: 08.04.2025 um 18:04 Uhr
5 Kommentare
Neuester Kommentar

Da gibt's viele Varianten .z.B.
- Die von mir favorisierte wäre How to: Use Anonymous Pipes for Local Interprocess Communication
- Die Anwendung auf einem Socket lauschen lassen und im Load-Event der Anwendung die Parameter prüfen und wenn die Anwendung schon läuft die Daten über das Socket in die Anwendung schreiben lassen und Prozess beenden.
- Oder die Daten über ein Windows-Message Event in die Anwendung schreiben, dabei die gleiche Prüfung im LoadEvent wie oben, wenn Anwendung schon einen Prozess besitzt, die Daten der Parameter über das Windows-Messaging-System in die Anwendung schieben wobei ein Message-Listener diese entgegen nimmt und ins Textfeld schreibt.

Zitat von @mayho33:
Wenn ich den Artikel richtig verstehe, werden anonyme Pipes zur Kommunikation vom übergeordneten Prozess zum untergeordneten Prozess verwendet und zurück. Es muss also eine Prozesskette geben. Das gibt es in meinem Fall nicht.
Dann nehme NamedPipes die haben diese Beschränkung nicht.Wenn ich den Artikel richtig verstehe, werden anonyme Pipes zur Kommunikation vom übergeordneten Prozess zum untergeordneten Prozess verwendet und zurück. Es muss also eine Prozesskette geben. Das gibt es in meinem Fall nicht.
https://docs.microsoft.com/de-de/dotnet/standard/io/how-to-use-named-pip ...
Dafür brauche ich einen Art Listener der beim Aufruf von meineApp.exe mit Argumenten nicht einfach die Exe wieder startet sondern die Argumente verarbeitet und anzeigt.
Was sollte denn der Aufruf von meineApp.exe anderes tun, als einen neuen Prozess zu erzeugen?
Du kannst dein Programm entsprechend anpassen und nur dann das Fullscreen anzeigen, wenn noch keine weiter Instanz läuft. Die Fullscreen Instanz versucht von einer Named Pipe zu lesen. Jede weitere Instanz bleibt ohne Fenster, schreibt auf die Named Pipe und wird anschließend beendet. Mehr würde mir zu dem Thema auch nicht einfallen.
Steffen