06. februar 2007 - 14:38Der er
17 kommentarer og 1 løsning
Hvordan (NotifyIcon) fungerer.
For at gøre det nemmere at forstå mit spørgmål, vil jeg give et simpel eksampel.
Jeg har oprettet en Consol application, som har den har kode i main metoden: public static void Main() { int i = 0; while (true) { Console.WriteLine("CommandLine Number: {0}", i); i++; System.Threading.Thread.Sleep(500); } } dvs. at den skriver en CommandLine for hver 0,5 scound.
Spørgsmål er hvordan kan jeg tilføre en (tray icon), så jeg højreklikke på iconen og vælge Exit for at lukke Commandoprop.
kan man ikke kompinere mellem windows app og consol projekt ? Jeg har også lavet en windows app med tray icon, som fungerer fint, men commandoprompt kommer ikke frem.dvs når jeg kører (Application.Run(new Form1());) som har tray icon, og som man kan højreklik på den og exit den, men jeg får en ikke commnadoprompt frem. Jeg skal har begge to fungerende sammetidigt. Jeg ved ikke om jeg har brug for at arbejde med tråd?
For at gøre det nemmere for jer til at fortå mit problem, så har jeg lavet den her lille eksampel på windows app. Så hvordan kan jeg kompinere koden, som ligger på spørgsmål beskrivelse og den her kod. så jeg kan få både kmmandopropt kørende og tray icon.
public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.NotifyIcon notifyIcon1; private System.Windows.Forms.ContextMenu contextMenu1; private System.Windows.Forms.MenuItem menuItem1; private System.ComponentModel.IContainer components;
public Form1() { this.components = new System.ComponentModel.Container(); this.contextMenu1 = new System.Windows.Forms.ContextMenu(); this.menuItem1 = new System.Windows.Forms.MenuItem();
// Initialize contextMenu1 this.contextMenu1.MenuItems.AddRange( new System.Windows.Forms.MenuItem[] { this.menuItem1 });
// Set up how the form should be displayed. this.ClientSize = new System.Drawing.Size(292, 266); this.Text = "Notify Icon Example";
// Create the NotifyIcon. this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
// The Icon property sets the icon that will appear // in the systray for this application. notifyIcon1.Icon = new Icon("backup.ICO");//TODO
// The ContextMenu property sets the menu that will // appear when the systray icon is right clicked. notifyIcon1.ContextMenu = this.contextMenu1;
// The Text property sets the text that will be displayed, // in a tooltip, when the mouse hovers over the systray icon. notifyIcon1.Text = "KPC Back up program"; notifyIcon1.Visible = true;
// Handle the DoubleClick event to activate the form. notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick); //Icon_Test.NewCon nc = new Icon_Test.NewCon(); //nc.oneToOne(); }
protected override void Dispose(bool disposing) { // Clean up any components being used. if (disposing) if (components != null) components.Dispose();
base.Dispose(disposing); }
private void notifyIcon1_DoubleClick(object Sender, EventArgs e) { // Show the form when the user double clicks on the notify icon.
// Set the WindowState to normal if the form is minimized. if (this.WindowState == FormWindowState.Minimized) this.WindowState = FormWindowState.Normal;
// Activate the form. this.Activate(); }
private void menuItem1_Click(object Sender, EventArgs e) { // Close the form, which closes the application. this.Close(); } }
Fordi hvis jeg får det her til at fungere, så kan jeg brug det på min oprindelig kod. I starten har jeg lavet en consol projekt, som kører hele tid i baggrund. Den fungerer fine, men hvergang skal jeg exit (exe filen) ,skal jeg åbne joblist og afslut proces. Så tankt jeg, kan man ikke bare lave en icon, som man kan højreklik på den og exit den.
Det har jeg lavet, jeg har lavet Form visible til false Jeg får icon som man kan høreklik på for at exit den. men resten af program(eller den vigtigste del af program)kører ikke, når jeg skrive denne line (Application.Run(new Form1());) Det er som om programet bliver der. Den kan ikke køre den næste line af kode
Og det næste kode line er en While sætning som er true hele tid.
og hvis jeg sætte While sætting foran (Application.Run(new Form1());) systemt bliver hele tid i While fordi den er true hele tid. så kan jeg ikke får min sys icon. Jeg vil kører både While sætning og (Application.Run(new Form1());) sammetidig.
mit while loop er mit hoved program, hvor (exe filen) scaner PC'en hele tiden og kører i baggrund. (tray icon) er bare en eksra component, som skal hjelp mig med at exit exe filen, når jeg vil det.
scanner disse tre folder(Skrivebord, Dokumenter og Foretrukne), om der er kommet nye file i dem eller nogle filer er blevet ændret. Hvis jeg finder nogle, så tager jeg back up af de nye/ændrede filer.
Programet funger fint. Jeg mangle bare icon til den.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.