IT TIP

백그라운드에서 .NET 콘솔 애플리케이션을 실행하는 방법

itqueen 2020. 12. 31. 23:14
반응형

백그라운드에서 .NET 콘솔 애플리케이션을 실행하는 방법


기본 제공 Windows 작업 스케줄러를 사용하여 15 분마다 실행되도록 예약 된 C #으로 작성된 콘솔 응용 프로그램이 있습니다.

실행될 때마다 검은 색 콘솔 상자가 실행되는 동안 팝업 된 다음 닫힙니다. 콘솔에 아무것도 쓰지 않습니다. 이것을 백그라운드에서 실행하는 방법이 있습니까?


쉬운!

믿기 ​​어려워 보이지만 매력으로 작용합니다. 징후없이 사용자 지정 작업을 수행하려는 경우 일부 설정 프로젝트에 이것을 사용했습니다.

  • 프로젝트를 Windows 응용 프로그램 프로젝트로 만듭니다 (이것은 어려운 부분입니다).
  • 어떤 형태로도 호출하지 마십시오. 콘솔 응용 프로그램에서와 동일하게 유지하십시오.

    class Program
    {
        static void Main(string[] args)
        {
            // Just don't call Application.Run(new frmMain(args));
    
            // ... your code
        }
     }
    

이는 Windows 응용 프로그램 프로젝트가 첫 번째 양식과 참조를 제외하고는 콘솔과 실제로 다르지 않기 때문입니다. 완전히 숨겨진 실행입니다. 시도 해봐!


프로젝트> 속성> 애플리케이션 탭> 출력 유형을 "Windows 애플리케이션"으로 변경합니다.

더 이상 콘솔 창이 없습니다.


Windows API를 사용하여 콘솔 상자를 최소화 할 수 있습니다. 그렇지 않으면 실제로 폼을로드하지 않고을 호출하지 않는 Windows EXE 파일로 만들 수 있습니다 System.Windows.Forms.Application.Run().

콘솔을 최소화하는 코드 :

[DllImport( "user32.dll" )]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

public const int SW_SHOWMINIMIZED = 2;

IntPtr winHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
ShowWindow(winHandle, SW_SHOWMINIMIZED);

Windows 서비스에 앱을 구현하는 것은 어떻습니까? 간격을 15 분으로 설정하고 timer_tick에서 작업을 실행할 수 있습니다.


이미 생성 된 Windows 콘솔 앱이있는 경우 앱의 출력 유형을 Windows 애플리케이션으로 변경하기 만하면됩니다.

프로젝트에서 : 속성> 애플리케이션으로 이동합니다. 출력 유형으로 "Windows 애플리케이션"을 선택합니다.

이것은 영향이 가장 적으며 Windows 작업 스케줄러가 동일한 작업을 계속 실행하도록 할 수 있습니다.


콘솔에 아무것도 쓰지 않으면 서비스로 만들 수 있습니다. http://msdn.microsoft.com/en-us/library/9k985bc9%28VS.80%29.aspx


현재 로그인 한 동일한 사용자로 실행하도록 예약 된 경우에만 표시됩니다. 엄청나게 긴 암호를 사용하여 컴퓨터에 다른 사용자를 만들고 관리자로 설정 (필요한 경우에만)하고 작업 실행을 예약합니다. 사용자.


이것은 쉬워요. 로그인 계정이 아닌 계정으로 실행되도록 작업을 설정합니다.

참조 URL : https://stackoverflow.com/questions/2686289/how-to-run-a-net-console-application-in-the-background

반응형