시스템 트레이에서 애플리케이션 최소화

Adnan Ashraf 2024년2월15일
  1. 윈도우 폼 애플리케이션
  2. 시스템 트레이
  3. 시스템 트레이 및 알림
  4. Windows Forms 애플리케이션을 시스템 트레이로 최소화
  5. 결론
시스템 트레이에서 애플리케이션 최소화

이 문서에서는 C#을 사용하여 Windows Form 애플리케이션을 작업 표시줄 대신 시스템 트레이로 최소화하는 방법을 설명합니다. 계속 진행하기 전에 Windows Form 응용 프로그램과 시스템 트레이에 대한 약간의 배경 지식이 필요하므로 이것부터 시작하겠습니다.

윈도우 폼 애플리케이션

Windows Forms는 데스크톱 응용 프로그램(및 웹 앱)용 GUI(그래픽 사용자 인터페이스)를 만드는 데 사용되는 .NET 프레임워크의 기본 제공 라이브러리입니다.

Windows Forms 애플리케이션의 일반적인 컨트롤에는 버튼, 메뉴, 텍스트 필드, 확인란 등이 포함됩니다. 가입 또는 로그인 양식은 Window Form 애플리케이션의 간단한 예일 수 있습니다.

Window Form 애플리케이션에 대한 자세한 정보는 여기에서 확인할 수 있습니다.

시스템 트레이

거의 모든 Windows Forms 앱에는 평소와 같이 응용 프로그램을 작업 표시줄로 최소화하는 기능이 있습니다. 자주 사용하고 빠른 액세스가 필요한 애플리케이션에 적합합니다.

하지만 가끔씩만 사용되는 프로그램을 백그라운드에서 계속 실행해야 한다면 어떻게 될까요? 이러한 앱을 작업 표시줄 쪽으로 최소화하면 작업 표시줄이 가득 차고 탐색하기 어려운 열려 있는 프로그램으로 작업 표시줄이 복잡해집니다.

이를 위해 응용 프로그램을 시스템 트레이로 최소화할 수 있습니다. 시스템 트레이는 작업 표시줄의 오른쪽 하단 모서리에 있습니다.

모든 애플리케이션은 시스템 트레이에 작은 아이콘으로 표시됩니다. 그것에 쉽게 접근할 수 있는 능력은 여전히 존재하지만, 그것은 당신의 시야에서 가려져 있습니다.

채팅 및 바이러스 백신 소프트웨어와 같이 오래 실행되는 애플리케이션은 사용자의 시야를 방해하지 않도록 이 방법을 자주 사용합니다. 그러나 이러한 앱은 백그라운드에서 계속 작동하며 필요한 경우 또는 일부 특정 이벤트가 발생하는 경우 풍선 팁으로 사용자에게 알릴 수 있습니다.

시스템 트레이 및 알림

시스템 트레이를 사용하기 위해 System.Windows.Forms라는 이름 공간에서 NotifyIcon 컨트롤을 활용했습니다.

몇 가지 중요한 NotifyIcon 속성은 다음과 같습니다.

  • BalloonTipIcon: 풍선 팁과 함께 표시될 아이콘을 나타냅니다.
  • BalloonTipText: 이 텍스트는 풍선 도움말에 나타납니다.
  • BalloonTipTitle: 풍선 팁에 부여되는 제목입니다.
  • Icon: 시스템 트레이에 표시되는 아이콘 파일로 설정되는 가장 중요한 속성입니다. .ico 파일만 지원됩니다.
  • 텍스트: 시스템 트레이의 아이콘 위로 커서를 이동할 때 나타나는 텍스트입니다.
  • 보임: 시스템 트레이에서 아이콘의 가시성을 설정하는 속성입니다.

애플리케이션에서 설정할 몇 가지 속성은 다음과 같습니다.

private void Form1_Load(object sender, EventArgs e) {
  notifyIcon1.BalloonTipTitle = "System Tray";
  notifyIcon1.BalloonTipText = "Some Notification";
  notifyIcon1.Text = "System Tray App";
}

Windows Forms 애플리케이션을 시스템 트레이로 최소화

다음은 작업 표시줄 대신 시스템 트레이에서 응용 프로그램을 최소화하는 단계별 절차입니다.

  • 비주얼 스튜디오를 엽니다. Visual Studio를 실행하면 다음 메뉴가 나타납니다.

    Visual Studio

  • 위 스니펫에 표시된 대로 메뉴에서 새 프로젝트 만들기를 선택합니다.
  • 응용 프로그램에 표시된 메뉴에서 WindowsFormApp을 선택하여 Windows Forms 응용 프로그램을 만듭니다. 그런 다음 다음 버튼을 클릭합니다.

    프로젝트 만들기

  • 마지막으로 아래 그림과 같이 Windows Forms 애플리케이션의 이름을 입력하고 만들기 버튼을 클릭합니다.

    프로젝트 이름

  • 표준 Windows Forms 애플리케이션을 구축한 후 첫 번째 작업은 도구 모음에서 NotifyIcon을 가져와서 양식에 배치하는 것입니다. 아래 그림과 같이 도구 상자를 두 번 클릭하고 메뉴에서 NotifyIcon을 선택합니다.

    시스템 트레이 - NotifyIcon

  • 그런 다음 NotifyIcon 속성 창을 열고 아래 그림과 같이 표시 상태를 False로 설정합니다.

    NotifyIcon

  • 시스템 트레이에 표시할 애플리케이션 아이콘을 선택합니다. 응용 프로그램의 아이콘을 선택하지 않은 경우 응용 프로그램을 최소화한 후 시스템 트레이에 응용 프로그램이 표시되지 않습니다.
  • MouseDoubleClick 메서드의 NotifyIcon에 다음 코드를 추가합니다.
    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) {
      this.Show();
      notifyIcon1.Visible = false;
      WindowState = FormWindowState.Normal;
    }
    
  • 다음 단계는 양식에 이벤트를 추가하는 것입니다. 이렇게 하려면 양식을 두 번 클릭하고 아래와 같이 이벤트 메뉴에서 크기 조정 이벤트를 선택합니다.

    양식 크기 조정

  • 이제 다음 코드를 추가하여 이벤트를 활성화합니다.
    private void Form1_Resize(object sender, EventArgs e) {
      if (WindowState == FormWindowState.Minimized) {
        this.Hide();
        notifyIcon1.Visible = true;
        notifyIcon1.ShowBalloonTip(1000);
      } else if (FormWindowState.Normal == this.WindowState) {
        notifyIcon1.Visible = false;
      }
    }
    
  • 또한 Form1_Load 메서드에 다음 코드를 추가하여 NotifyIcon의 다양한 속성을 설정합니다.
    private void Form1_Load(object sender, EventArgs e) {
      notifyIcon1.BalloonTipTitle = "System Tray";
      notifyIcon1.BalloonTipText = "Some Notification";
      notifyIcon1.Text = "System Tray App";
    }
    
  • 완료되었으므로 애플리케이션을 테스트해 보겠습니다. 응용 프로그램을 실행하면 다음 양식이 표시됩니다.

    생성된 양식

  • 주어진 그림은 앱을 최소화하기 전의 시스템 트레이 상태를 보여줍니다. 여기서 앱이 작업 표시줄에 표시되는 것을 볼 수 있습니다.

    최소화 전 시스템 트레이 상태

  • 아래와 같이 양식에서 최소화 버튼을 클릭할 때. 그러면 응용 프로그램이 시스템 트레이에서 최소화됩니다.

    생성된 양식 2

  • 그림은 앱을 최소화한 후 시스템 트레이의 상태를 보여줍니다. 여기에서 애플리케이션이 시스템 트레이에 표시되는 것을 볼 수 있습니다.

    최소화 후 시스템 트레이 상태

결론

Windows Forms 응용 프로그램은 기본적으로 작업 표시줄에서 최소화되도록 설정되어 있습니다. 그러나 일반적으로 백그라운드에서 실행되는 애플리케이션(예: 바이러스 백신 소프트웨어)은 자주 사용하지 않는 백그라운드 애플리케이션에 대해 작업 표시줄을 서두르는 것은 좋은 생각이 아니므로 작업 표시줄로 최소화해서는 안 됩니다.

Windows Forms의 NotifyIcon 덕분에 이러한 응용 프로그램을 작업 표시줄 대신 시스템 트레이로 최소화하도록 재정의할 수 있습니다.