Сбой WPF notifyicon при запуске Windows - PullRequest
0 голосов
/ 16 января 2019

всем! Недавно я написал приложение WPF и хочу, чтобы оно запускалось при запуске Windows с видимым значком в трее, но я обнаружил, что компонент NotifyIcon завершит работу программы при первом запуске (когда Windows ОС запускается), но потом она запустится без проблем, вот мой код главного окна:

namespace App
{

    public partial class MainWindow : MetroWindow
    {

        private System.Windows.Forms.NotifyIcon notifyIcon = null;
        public MainWindow()
        {

                InitializeComponent();
       }

        protected override void OnStateChanged(EventArgs e)
        {

                if (WindowState == System.Windows.WindowState.Minimized)
                {
                    this.Hide();
                }
                base.OnStateChanged(e);       
        }
        protected override void OnInitialized(EventArgs e)
        {

                notifyIcon = new System.Windows.Forms.NotifyIcon();
                notifyIcon.Click += new EventHandler(notifyIcon_Click);              
                notifyIcon.Icon = new System.Drawing.Icon(System.Environment.CurrentDirectory + "\\logo.ico");
                notifyIcon.BalloonTipText = "Program is minimized. Click the tray icon to restore it.";
            notifyIcon.Text= "Program is minimized. Click the tray icon to restore it.";
            base.OnInitialized(e);
        }

        private void Background_MouseDown(object sender, MouseButtonEventArgs e)
        {
            DragMove();
        }
        protected override void OnClosed(EventArgs e)
        {
            base.OnClosed(e);
            System.Windows.Application.Current.Shutdown();
        }
        private void MetroWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {        
            notifyIcon.Visible = false;

        }
        void notifyIcon_Click(object sender, EventArgs e)
        {
            this.Show();
            this.WindowState = WindowState.Normal;
        }
        private void MetroWindow_Loaded(object sender, RoutedEventArgs e)
        {
            notifyIcon.Visible = true;
        }
    }

}

и вот код для запуска приложения при запуске:

Microsoft.Win32.RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
Assembly curAssembly = Assembly.GetExecutingAssembly();
key.SetValue(curAssembly.GetName().Name, curAssembly.Location);
key.Close();

Приложение запускается без проблем, когда вы открываете его вручную, но оно вылетает при запуске Windows, и если я удаляю все строки о NotifyIcon, оно будет работать без проблем при запуске Windows, я не могу понять, что произошло, пожалуйста, помогите мне большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...