sistem tepsisi uygulamasının içerik menüsünü sağ tıklatmak için klasör/alt klasör içeriği numaralandırılıyor Sağ tıklama içerik menüsüne sahip bir sistem tepsisi simgesi oluşturmak için şablonu https://alanbondo.wordpress.com/2008/06/22/creating-a-system-tray-app-with-c/'dan kullanıyorum. Ben başlatmakC#
private void MyApps(object sender, EventArgs e)
{
String currentUser = Environment.UserName.ToString();
Process explorer = new Process();
explorer.StartInfo.FileName = "explorer.exe";
explorer.StartInfo.Arguments = @"C:\Users\" + currentUser + @"\desktop\MyApps";
explorer.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
explorer.Start();
}
Ne Doğrusu yapacağını sistem tepsisi simgesi düğmesi olan bu fonksiyonu kullanarak bir dizinin köküne açılan bir kaşif sürecini düğmelerinden birine sahip açabiliyorum
, ne zaman tıklandığında, kendisinin taranabilir alt klasörleri içerdiği, istenen dizinin içeriğini içeren bir alt menüye genişler. İç içe menüler ve uygulamalar ile (Windows 8 öncesi) Başlat menüsünü düşünün; taklit etmek istediğim davranış budur.
Şimdiye kadar bulduklarım, insanların kendi özelleştirilmiş Windows Gezgini kabuğunu oluşturmak için yazdıkları çok sayıda projedir, aslında istenen klasörün içeriğini sağ tıklama içerik menüsüne dinamik olarak numaralandırmak için bu kadar ileri gitmek zorundadırlar. sistem tepsisi simgesinin
Çok daha .NET uygulamaları için ama ne okudum görsel stüdyo formları kullanarak rahatım, hiçbir yolu yoktur aslında 'gizlemek' açılışında formu için şimdilik C# kullanıyorum böylece
Herhangi bir tavsiye veya öneri takdir edilecektir. Teşekkürler!
Düzenleme: Burada, menü öğesinin belirtilen dizinin içeriği ile yinelemeli olarak doldurulması için önerilen yöntemle güncellenmiş kod. Şimdi "System.Windows.Forms.MenuItem" DropDownItems
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
namespace MyTrayApp
{
public class SysTrayApp : Form
{
[STAThread]
public static void Main()
{
Application.Run(new SysTrayApp());
}
private NotifyIcon trayIcon;
private ContextMenu trayMenu;
public SysTrayApp()
{
trayMenu = new ContextMenu();
trayMenu.MenuItems.Add("Exit", OnExit);
trayMenu.MenuItems.Add("My Applications").Click += new EventHandler(MyApps);
trayIcon = new NotifyIcon();
trayIcon.Text = "MyTrayApp";
trayIcon.Icon = new Icon(SystemIcons.Application, 40, 40);
trayIcon.ContextMenu = trayMenu;
trayIcon.Visible = true;
}
protected override void OnLoad(EventArgs e)
{
Visible = false; // Hide form window.
ShowInTaskbar = false; // Remove from taskbar.
base.OnLoad(e);
}
private void OnExit(object sender, EventArgs e)
{
Application.Exit();
}
protected override void Dispose(bool isDisposing)
{
if (isDisposing)
{
trayIcon.Dispose();
}
base.Dispose(isDisposing);
}
private void MyApps(object sender, EventArgs e)
{
String currentUser = Environment.UserName.ToString();
string[] directories = Directory.GetDirectories(@"C:\Users\" + currentUser + @"\desktop\My Applications");
foreach (string dir in directories)
{
string[] subdir = Directory.GetDirectories(dir);
this.trayMenu.MenuItems.Add(dir);
foreach (string sub in subdir)
{
(trayMenu.MenuItems[trayMenu.MenuItems.Count - 1] as MenuItem).DropDownItems.Add(sub);
}
string[] files = Directory.GetFiles(dir);
foreach (string file in files)
{
this.trayMenu.MenuItems.Add(file);
}
}
}
}
}
istediğini çok zor bir görev görünmüyor yapacağını düşünüyorum. Alt klasörleri 'Directory.GetDirectories' kullanarak numaralandırmanız ve bu bilgiyi kullanarak içerik menüsünü oluşturmanız gerekir. Ama denemedim, eğer herhangi bir probleminiz varsa, bunun hakkında başka bir soru sorun – Pikoh
İstenilen dizinin içeriğinin bir listesini oluşturması olasıdır. tek tek dosyaları doğrudan listeden başlatmak için tek tıklatıldı mı? – gunstarone