/ / WPF सिस्टम ट्रे आइकन कैसे बनाएं जब कोई "मुख्य" होस्ट विंडो मौजूद नहीं है - wpf, सिस्टम-ट्रे

WPF सिस्टम ट्रे आइकन कैसे बनाएं जब कोई "मुख्य" होस्ट विंडो मौजूद न हो - wpf, system-tray

पृष्ठभूमि

हमारे पास एक एप्लिकेशन है जो पृष्ठभूमि में बैठता है और उपयोग करता है FileSystemWatcher नई फ़ाइलों के लिए एक फ़ोल्डर की निगरानी करने के लिए, जब एक नई फ़ाइल दिखाई देती है तो यह एक विंडो को जन्म देती है।

मुझे इस एप्लिकेशन के लिए सिस्टम ट्रे आइकन बनाने की आवश्यकता है ताकि हम इसमें सरल संदर्भ मेनू आइटम जोड़ सकें (कार्य प्रबंधक में जाने के बिना ऐप को बंद करने में सक्षम होना सबसे बड़ा एक है)।

सवाल

कैसे लागू करने के लिए सभी खोज परिणामसिस्टम ट्रे आइकन इस बात के उदाहरणों में है कि इसे एक WPF विंडो में कैसे जोड़ा जाए, न कि एप्लिकेशन ही, क्योंकि मेरे ऐप में एक मुख्य विंडो नहीं है और जब एक घटना होती है तो मैं कैसे इसे लागू कर सकता हूं?

उत्तर:

उत्तर № 1 के लिए 10

एप्लिकेशन सेट करें ShutdownMode सेवा मेरे OnExplicitShutdown और से ट्रे आइकन प्रदर्शित करें Application.OnStartup। यह उदाहरण उपयोग करता है NotifyIcon से WinForms, इसलिए एक संदर्भ जोड़ें System.Windows.Forms.dll तथा System.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");
}
}
}