Próbuję utworzyć proces na zdalnej maszynie przy użyciu klasy System.Diagnostics.Process. Potrafię stworzyć proces. Problem w tym, że tworzenie usługi trwa długo i wyświetla się okno konsoli. Inną irytującą rzeczą jest to, że okno konsoli jest wyświetlane na górze mojego formularza Windows i nie mogę wykonywać żadnych innych operacji na tym formularzu. Ustawiłem wszystkie właściwości takie jak CreateNoWindow = true
:
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
ale nadal pokazuje okno konsoli. nawet ja przekierowałem wyjście i błędy do oddzielnego strumienia, ale bez powodzenia.
Czy jest inny sposób na ukrycie okna konsoli? Proszę pomóż mi .
Oto część mojego kodu, której użyłem do wykonania polecenia sc.
Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.FileName = "sc";
proc.StartInfo.Arguments = string.Format(@"\\SYS25 create MySvc binPath= C:\mysvc.exe");
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
c#
process
console-application
Prasad
źródło
źródło
proc.StartInfo.RedirectedStandardOutput = true
? Mam to do pracy z aplikacją Windows.UseShellExecute
iCreateNoWindow
dwa razy?Odpowiedzi:
Miałem podobny problem podczas próby uruchomienia procesu bez wyświetlania okna konsoli. Testowałem z kilkoma różnymi kombinacjami wartości właściwości, aż znalazłem taki, który wykazywał pożądane zachowanie.
Oto strona wyjaśniająca, dlaczego
UseShellExecute
właściwość musi być ustawiona na false.http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx
W sekcji Uwagi na stronie:
źródło
startInfo.UseShellExecute = false;
Miałem pecha z tą odpowiedzią, ponieważ proces (Wix light.exe) zasadniczo wychodził na lunch i nie wracał do domu na czas na kolację. Jednak dla mnie dobrze działały:
źródło
CreateNoWindow = true
dla mnie nie zadziałało, toTo powinno działać, spróbuj;
Dodaj odniesienie do systemu.
Następnie użyj tego kodu, aby uruchomić polecenie w ukrytym oknie CMD.
źródło
To nie pokazuje okna:
źródło