[C#] 시스템 트레이에서만 실행되는 .NET Windows Forms 응용 프로그램을 만들려면 어떻게해야합니까?

시스템 트레이에서 Windows Forms 응용 프로그램을 실행 하려면 어떻게해야 합니까?

트레이를 최소화 할 수있는 응용 프로그램은 아니지만 아이콘, 도구 설명 및 “오른쪽 클릭”메뉴 외에 트레이에만있는 응용 프로그램.



답변

코드 프로젝트 기사 Tasktray 응용 프로그램 만들기 는 시스템 트레이에만 존재하는 응용 프로그램을 만드는 간단한 설명과 예를 제공합니다.

기본적으로 Application.Run(new Form1());라인을 변경하여 에서 Program.cs상속되는 클래스를 시작하고 해당 클래스 ApplicationContext의 생성자가NotifyIcon

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        Application.Run(new MyCustomApplicationContext());
    }
}


public class MyCustomApplicationContext : ApplicationContext
{
    private NotifyIcon trayIcon;

    public MyCustomApplicationContext ()
    {
        // Initialize Tray Icon
        trayIcon = new NotifyIcon()
        {
            Icon = Resources.AppIcon,
            ContextMenu = new ContextMenu(new MenuItem[] {
                new MenuItem("Exit", Exit)
            }),
            Visible = true
        };
    }

    void Exit(object sender, EventArgs e)
    {
        // Hide tray icon, otherwise it will remain shown until user mouses over it
        trayIcon.Visible = false;

        Application.Exit();
    }
}


답변

mat1t가 말했듯이-응용 프로그램에 NotifyIcon을 추가 한 다음 다음 코드와 같은 것을 사용하여 툴팁과 상황에 맞는 메뉴를 설정해야합니다.

this.notifyIcon.Text = "This is the tooltip";
this.notifyIcon.ContextMenu = new ContextMenu();
this.notifyIcon.ContextMenu.MenuItems.Add(new MenuItem("Option 1", new EventHandler(handler_method)));

이 코드는 시스템 트레이의 아이콘 만 보여줍니다.

this.notifyIcon.Visible = true;  // Shows the notify icon in the system tray

어떤 이유에서든 양식이있는 경우 다음이 필요합니다.

this.ShowInTaskbar = false;  // Removes the application from the taskbar
Hide();

컨텍스트 메뉴를 가져 오려면 마우스 오른쪽 버튼을 클릭하면 자동으로 처리되지만, 왼쪽 클릭에 대해 조치를 수행하려면 클릭 핸들러를 추가해야합니다.

    private void notifyIcon_Click(object sender, EventArgs e)
    {
        var eventArgs = e as MouseEventArgs;
        switch (eventArgs.Button)
        {
            // Left click to reactivate
            case MouseButtons.Left:
                // Do your stuff
                break;
        }
    }


답변

.NET 1.1로 트레이 바 앱을 작성했으며 양식이 필요하지 않았습니다.
우선, 프로젝트의 시작 객체를 Main모듈에 정의 된 Sub로 설정하십시오 .
그런 다음 프로그램 구성 요소를 만들기 : NotifyIconContextMenu. “종료”또는 이와 유사한
것을 포함해야합니다 MenuItem.
바인딩 ContextMenu받는 NotifyIcon.
를 호출하십시오 Application.Run().
끝내기에 대한 이벤트 핸들러에서 MenuItem확인 전화를하는 설정 NotifyIcon.Visible = FalseApplication.Exit(). 필요한 것을 추가하고 ContextMenu올바르게 처리하십시오 🙂


답변

  1. 마법사를 사용하여 새 Windows 응용 프로그램을 만듭니다.
  2. 지우다 Form1코드에서 하십시오.
  3. Program.cs에서 코드를 제거하여 Form1 .
  4. 사용 NotifyIcon 하여 시스템 트레이 아이콘 (여기에 아이콘을 할당)을 만들 클래스를.
  5. 컨텍스트 메뉴를 추가하십시오.
  6. 또는 반응 NotifyIcon 의 마우스 클릭에 오른쪽 클릭과 왼쪽 클릭을 구별하여 상황에 맞는 메뉴를 설정하고 어느 버튼 (오른쪽 / 왼쪽)을 눌렀는지 표시합니다.
  7. Application.Run()앱을 계속 Application.Exit()종료하여 종료합니다. 또는 bool bRunning = true; while(bRunning){Application.DoEvents(); Thread.Sleep(10);}. 그런 다음 bRunning = false;앱을 종료하도록 설정 하십시오.

답변

“시스템 트레이”응용 프로그램은 일반적인 Win Form 응용 프로그램이지만 Windows 시스템 트레이 영역에 아이콘을 생성한다는 점만 다릅니다. NotifyIcon component를 사용하여 sys.tray 아이콘을 만들려면 도구 상자 (공통 컨트롤)에서 해당 아이콘을 찾아 속성 (아이콘, 도구 설명)을 수정할 수 있습니다. 또한 마우스 클릭 및 더블 클릭 메시지를 처리 ​​할 수 ​​있습니다.

모양과 느낌 또는 표준 트레이 응용 프로그램을 달성하기 위해 한 가지 더 있습니다. 기본 양식 쇼 이벤트에 followinf 행을 추가하십시오.

private void MainForm_Shown(object sender, EventArgs e)
{
    WindowState = FormWindowState.Minimized;
    Hide();
} 


답변

내가 아는 한 양식을 사용하여 응용 프로그램을 작성해야하지만 양식에 대한 컨트롤이 없으며 표시되지 않도록 설정해야합니다. NotifyIcon (의 MSDN 샘플을 찾을 수 있습니다 여기를 응용 프로그램을 작성하는).


답변

다음은 Visual Studio 2010 , .NET 4에서 수행 한 방법입니다.

  1. Windows Forms 응용 프로그램을 만들고 속성에서 ‘단일 인스턴스 응용 프로그램 만들기’를 설정하십시오.
  2. ContextMenuStrip 추가
  3. 컨텍스트 메뉴 스트립에 항목을 추가하고 두 번 클릭하여 핸들러를 가져옵니다 (예 : ‘exit'(두 번 클릭)-> 핸들러-> me.Close ()
  4. 디자이너에서 contextMenuStrip을 방금 만든 아이콘으로 설정하고 아이콘을 선택하십시오 ( ‘common7 …’의 VisualStudio 폴더에서 일부를 찾을 수 있습니다).
  5. 디자이너에서 폼의 속성을 설정하십시오. FormBorderStyle : none, ShowIcon : false, ShowInTaskbar : false, Opacity : 0 %, WindowState : Minimized
  6. Form1_Load의 끝에 Me.Visible = false를 추가하면 Ctrl+를 사용할 때 아이콘이 숨겨집니다.Tab
  7. 필요에 따라 실행하고 조정하십시오.