De lancering van proces in C# Zonder Afleidende Console Venster

Ik erachter te komen hoe om te starten met een proces. Maar mijn probleem is nu het venster van de console (in dit geval 7z) verschijnt voorste blokkeren van mijn visie en het verwijderen van mijn focus het onderbreken van mijn zin of w/e ik ben bezig om de paar seconden. Zijn uiterst vervelend, hoe kan ik voorkomen dat dit gebeurt. Ik dacht dat CreateNoWindow lost dat maar niet.

OPMERKING: soms wordt de console input van de gebruiker (bestand vervangen of niet). Dus het verbergen van het volledig kan worden problemen een goed.

Dit is mijn huidige code.

void doSomething(...)
{
    myProcess.StartInfo.FileName = ...;
    myProcess.StartInfo.Arguments = ...;
    myProcess.StartInfo.CreateNoWindow = true;
    myProcess.Start();
    myProcess.WaitForExit();
}
  • Ik denk dat ik me herinner CreateNoWindow niet werken wanneer ik gebruikte het op mijn laatste baan.
InformationsquelleAutor | 2009-04-10

 

4 Replies
  1. 85

    Als ik me goed herinner, dit werkte voor mij

    Process process = new Process();
    
    //Stop the process from opening a new window
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.CreateNoWindow = true;
    
    //Setup executable and parameters
    process.StartInfo.FileName = @"c:\test.exe"
    process.StartInfo.Arguments = "--test";
    
    //Go
    process.Start();

    Ik gebruik dit vanuit een C# console applicatie starten ander proces, en het stopt met de toepassing van de lancering in een apart venster, in plaats daarvan houdt hij alles in het zelfde venster.

    • Mooie uitleg kunt u hier vinden: blogs.msdn.com/b/jmstall/archive/2006/09/28/createnowindow.aspx
    • Toen ik RedirectStandardOutput te true ik heb niet elke uitgang in de standaard console, in een commentaar dat de line out gaf me output in de standaard console (ik ben het maken van een console app).
    • Dit lijkt te leiden tot een probleem met process.WaitForExit. Uiteindelijk heb ik met behulp process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden in plaats dat blijkt goed te werken.
  2. 20

    @galets
    In uw suggestie, het venster wordt nog steeds gemaakt, maar het begint geminimaliseerd. Dit zou beter werken voor daadwerkelijk doet wat acidzombie24 wilde:

    myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    • Uitstekende suggestie!! Dank u zeer veel.
  3. 3

    Probeer dit:

    myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
    • heb alles geprobeerd en dit is het enige dat het heeft gewerkt
  4. 3

    Ik heb om dubbel te controleren, maar ik geloof dat je het ook nodig zijn om UseShellExecute = false. Ook dit kun je vastleggen in de standaard uitvoer/fout stromen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *