2011-03-02 1 views
10

배경에는 "메인"호스트 윈도우가 존재하지 않는 경우 WPF 시스템 트레이 아이콘을 만드는 방법

우리는 배경에 앉아 새 파일이 나타날 때 새 파일에 대한 폴더를 모니터링 할 수 FileSystemWatcher을 사용하는 응용 프로그램이 그것은 창을 만든다.

우리가해야 할 일은이 응용 프로그램에 대한 시스템 트레이 아이콘을 만들어서 간단한 상황에 맞는 메뉴 항목을 추가하는 것입니다 (가장 큰 것은 작업 관리자로 가지 않고 앱을 닫을 수 있습니다).

질문

내 응용 프로그램이 메인이없는 때문에, WPF 창없는 응용 프로그램 자체에 추가하는 방법의 예에 시스템 트레이 아이콘 포인트를 구현하는 방법에 대한 검색 결과의 모든 창문이 생기고 창문이 생길 때 어떻게하면 될까요?

+0

의 중복 가능성 http://stackoverflow.com/questions/1472633/wpf-application-that-only-has-a-tray-icon) – svick

+2

이 게시물 확인 http://stackoverflow.com/questions/1472633/wpf-application-that-only-has-a-tray-icon –

답변

10

ShutdownModeOnExplicitShutdown으로 설정하고 Application.OnStartup의 트레이 아이콘을 표시하십시오. 이 예에서는 WinFormsNotifyIcon을 사용하므로 System.Windows.Forms.dllSystem.Drawing.dll에 대한 참조를 추가하십시오. 또한 트레이 아이콘에 포함 된 리소스를 추가하십시오.

App.xaml

<Application x:Class="WpfTrayIcon.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      ShutdownMode="OnExplicitShutdown" 
      > 
    <Application.Resources> 

    </Application.Resources> 
</Application> 

App.xaml.cs를

using System; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Data; 
using System.Windows; 

using NotifyIcon = System.Windows.Forms.NotifyIcon; 

namespace WpfTrayIcon 
{ 
    public partial class App : Application 
    { 
     public static NotifyIcon icon; 

     protected override void OnStartup(StartupEventArgs e) 
     { 
      App.icon = new NotifyIcon(); 
      icon.Click += new EventHandler(icon_Click); 
      icon.Icon = new System.Drawing.Icon(typeof(App), "TrayIcon.ico"); 
      icon.Visible = true; 

      base.OnStartup(e); 
     } 

     private void icon_Click(Object sender, EventArgs e) 
     { 
      MessageBox.Show("Thanks for clicking me"); 
     } 
    } 
} 
[전용 트레이 아이콘이 WPF 출원 (
+0

If 아이콘은 프로젝트 속성의 Resources를 통해 추가됩니다.이 작은 차이가 있습니다 :'icon.Icon = MyApp.Properties.Resources.TrayIcon;' – retroj