[C#] Process Commandline Parameters

Pagina: 1
Acties:

  • Nazgul
  • Registratie: Februari 2000
  • Laatst online: 11-10-2022

Nazgul

Digital Pizza Crew

Topicstarter
Ik heb een systeem waarop een aantal keer dezelfde applicatie draait (Console Apps) met als enige onderscheid de commandline parameters.

Nu moet ik een soort shell gaan schrijven die het mogelijk maakt om zo'n console applicatie te stoppen of te starten. Maar aangezien ik wel de juiste applicatie wil stoppen zal ik ze moeten kunnen onderscheiden.

Na wat zoeken ben ik eens gaan kijken naar System.Diagnostics.Process.

Het is me nu dus gelukt om de applicatie te starten dmv:
Process.Start("d:\app.exe", "d:\param.txt");

Als ik vervolgens met een foreach door Process.GetProcesses() door de processen heen wandel geeft de applicatie keurig 'd:\param.txt' bij StartInfo.Arguments

Maar nu het probleem.
Als ik de console applicatie vanaf de commandline start (dus: d:\>app.exe d:\param.txt) en ik loop daarna door de lijst met processen, dan is StartInfo.Arguments voor mijn process een lege string.

Weet iemand waarom ik in dat geval mijn commandline parameters niet krijg?
Of een andere manier om te bereiken wat ik wil?

No trees were killed in the sending of this message. However a large number of electrons were terribly inconvenienced.


  • Nazgul
  • Registratie: Februari 2000
  • Laatst online: 11-10-2022

Nazgul

Digital Pizza Crew

Topicstarter
Niemand een idee?

No trees were killed in the sending of this message. However a large number of electrons were terribly inconvenienced.


Verwijderd

Normaliter maak je in zo'n situatie een windows service aan. Binnen een service kun je dan zoveel instanties van je applicatie maken als je nodig hebt. Via een Service Control Manager (SCM) kun je de service dan besturen (Starten, Pauzeren, Stoppen, etc.). Dit kan een simpele console app zijn (denk aan de windows telnet service manager) of een volledige GUI. Je hebt in dit geval uiteraard geen console's meer voor je 'echte' programma, dus de informatie die je in deze vensters toont zul je anders moeten verwerken (bv. via de EventLog).
Voor meer info check de uitstekende SDK docs (onder Building Applications/Windows service applications).

Als je toch besluit op de oude toer door te gaan dan zou je misschien ergens een collectie van alle draaiende applicaties kunnen bijhouden op basis van de Process ID. Hoe je dit precies implementeerd laat ik aan je creativiteit over ;) .

  • Nazgul
  • Registratie: Februari 2000
  • Laatst online: 11-10-2022

Nazgul

Digital Pizza Crew

Topicstarter
Ik ben bang dat ik het toch op de 'oude toer' moet gaan proberen, aangezien de console applicaties die gestart en gestopt moeten worden niet door ons geschreven zijn, maar afkomstig zijn van een extern bureau.
(Dat ondertussen failiet is en dus geen support meer levert, maar dat terzijde)

Wat ik nu heb is een windows service die initieel een aantal console applicaties start en een lijstje bijhoudt met bijbehorende ProcessId's, zodat bij het stoppen van de service alle console applicaties ook netjes gestopt kunnen worden.

Het moet echter ook mogelijk zijn om de individuele console applicaties makkelijk te kunnen stoppen en starten.
Nu kan ik wel een simpele GUI applicatie maken die die console applicaties kan starten/stoppen, maar daarvoor heb ik de gegevens van die ProcessID's uit de Windows Service nodig en ik zou zo gauw niet weten hoe ik daar aan kan komen.

Weet iemand een manier om in .Net te communiceren met een ander process?

No trees were killed in the sending of this message. However a large number of electrons were terribly inconvenienced.


Verwijderd

> Weet iemand een manier om in .Net te communiceren met een ander process?

Wat dacht je van .Net Remoting?