Process.Start C #에서 콘솔 창 숨기기
System.Diagnostics.Process 클래스를 사용하여 원격 컴퓨터에서 프로세스를 만들려고합니다. 프로세스를 만들 수 있습니다. 그러나 문제는 서비스 생성에 시간이 오래 걸리고 콘솔 창이 표시된다는 것입니다. 또 다른 성가신 점은 콘솔 창이 내 창 양식 위에 표시되고 해당 양식에서 다른 작업을 수행 할 수 없다는 것입니다. 다음과 같은 모든 속성을 설정했습니다 CreateNoWindow = true
.
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
하지만 여전히 콘솔 창을 보여줍니다. 출력과 오류를 별도의 스트림으로 리디렉션했지만 운이 없습니다.
콘솔 창을 숨기는 다른 방법이 있습니까? 제발 도와주세요.
다음은 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();
콘솔 창을 표시하지 않고 프로세스를 시작하려고 할 때 비슷한 문제가 발생했습니다. 내가 원하는 동작을 나타내는 것을 찾을 때까지 여러 가지 속성 값 조합으로 테스트했습니다.
다음은 UseShellExecute
속성을 false로 설정해야하는 이유를 자세히 설명하는 페이지 입니다.
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx
페이지의 비고 섹션에서 :
UseShellExecute 속성이 true이거나 UserName 및 Password 속성이 null이 아니면 CreateNoWindow 속성 값이 무시되고 새 창이 생성됩니다.
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = fullPath;
startInfo.Arguments = args;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
Process processTemp = new Process();
processTemp.StartInfo = startInfo;
processTemp.EnableRaisingEvents = true;
try
{
processTemp.Start();
}
catch (Exception e)
{
throw;
}
나는이 대답에 불운을 보였습니다. 프로세스 (Wix light.exe)는 본질적으로 점심 식사에 나가고 저녁 시간에 집에 오지 않았습니다. 그러나 다음은 나를 위해 잘 작동했습니다.
Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// etc, then start process
이것은 작동합니다.
시스템 참조를 추가하십시오.
using System.Diagnostics;
Then use this code to run your command in a hiden CMD Window.
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.Arguments = "Enter your command here";
cmd.Start();
This doesn't show the window:
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.CreateNoWindow = true;
...
cmd.Start();
참고URL : https://stackoverflow.com/questions/5377423/hide-console-window-from-process-start-c-sharp
'developer tip' 카테고리의 다른 글
Spring XML에서 기본 속성 값을 지정하는 방법이 있습니까? (0) | 2020.09.06 |
---|---|
android-HTC 모바일에서 등급 표시 줄을 클릭 및 터치 할 수 없도록 설정하는 방법 (0) | 2020.09.06 |
jQuery 위치 href (0) | 2020.09.05 |
pg_dump를 올바르게 인증하려면 어떻게해야합니까? (0) | 2020.09.05 |
코드에서 Java Swing 애플리케이션을 닫는 방법 (0) | 2020.09.05 |