2013-06-13 3 views
1

winforms 응용 프로그램이 있습니다. 명령 줄에서 .exe를 실행하고 출력 텍스트 상자 중 하나의 출력을 명령 줄로 리디렉션하고 싶습니다. 백그라운드에서 논리를 실행하는 winform 응용 프로그램을 시작하고 싶지 않습니다. winforms 명령 줄 출력

나는이 스레드

C# application both GUI and commandline

에서 조언을 시도하지만 난 cmd를 통해 응용 프로그램을 실행했을 때 나는 cmd.exe를에 명령 줄에서 내 console.writeline 메시지가 표시되지 않았다. exe. 내가 잘못하고있는 것에 대해 누군가 나를 인도 할 수 있습니까?

if(args.Length >0) 
    { 
    Console.writeline("this has arguments"); 
    new Mainform(); 
    } 
    else 
    { 
    Application.EnableVisualStyles(); 
    Application.Run(new MainForm()); 
    } 

다른 부분은 여전히 ​​작동 :

나는이 논리를 한 if 문이있다. 그러나 if 부분에서 cmd.exe를 사용하여 응용 프로그램을 실행하거나 속성 -> 디버그 -> 명령 줄 인수를 사용하여 디버깅하는 동안 실행할 인수를 지정하는 경우에는 아무 것도 발생하지 않습니다. 내가 뭘 잘못하고 있는지 전혀 모르겠다.

+1

논리를 별도의 dll로 이동하고 해당 dll을 양식 및 콘솔 응용 프로그램에서 모두 사용하십시오. –

+0

이렇게 두 가지 응용 프로그램을 만드시겠습니까? 하나는 Winform 용이고 다른 하나는 콘솔 용입니까? – user2482989

+0

정확히. 그리고 두 응용 프로그램은 동일한 비즈니스 논리를 사용합니다. 사용중인 UI와 독립적입니다. –

답변

0

Windows Forms project을 만들고 코드를 붙여 넣은 것 같습니까? 그렇다면 작동하지 않을 수 있습니다. Console project을 작성해야하며 여기에서 테스트 한 코드는 양식이 표시 될 때 (GUI 모드) 콘솔이 여전히 닫히고 콘솔이 닫히면 양식이 닫히는 것을 제외하고는 매력적입니다.

class Program 
{ 
    static void Main(string[] args) 
    {    
      if (args.Length == 0) 
      { 
       Application.EnableVisualStyles(); 
       Application.SetCompatibleTextRenderingDefault(false); 
       Application.Run(new Form1()); 
      } 
      else //Process command lines 
      { 
       Console.WriteLine("Please enter some command."); 
       string cmd = Console.ReadLine(); 
       Console.WriteLine("You entered: " + cmd); 
      }    
    } 
} 

Console project은 자동으로 System.Windows.Forms.dll에 대한 참조를 추가하지 않으므로 해당 콘솔 프로젝트에서 양식을 만들려면 수동으로 수행해야합니다. 요점은 Winforms project에 코드를 적용한 반면 Console project에 있어야한다는 것입니다. winforms 응용 프로그램에서 콘솔 창을 표시 할 수있는 방법은 알고 있는데 cmd.exe을 실행 중이지만 응용 프로그램을 실행하는 데 사용중인 기존 콘솔 창보다 새 콘솔 창이 표시됩니다.

+0

감사합니다. 네, 결국 혼자서 알아 냈습니다. 이제 대신 프로세스에 연결하고 작동합니다. 엔터를 치지 않고도 프롬프트를 되 찾을 수있는 비정상적인 방법을 찾으려고합니다. System.Windows.Forms.SendKeys.SendWait ("{ENTER}")를 사용했습니다. 하지만 내 상사는 그 해결책에 만족하지 않고 그것을 해킹하는 것으로 본다. – user2482989