Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1073
  • Last Modified:

How can I start my application as hidden?

Hi,

How may I start my Application with no visible Form. I just want to add A NotifyIcon in the systray. When the user DoubleClick my NotifyIcon, I will execute some code.

Thanks.
0
EEssam
Asked:
EEssam
2 Solutions
 
talspaugh27Commented:
Found this on another solution, if this doesnt help let me know and I will shoot off the link to the other solution to ya

static void Main()
  {
    System.ComponentModel.Container components;
    components = new System.ComponentModel.Container();
    using(components)
    {
      System.Windows.Forms.ContextMenu contextMenu;
      contextMenu = new System.Windows.Forms.ContextMenu();

      contextMenu.MenuItems.Add("&Close", new EventHandler(CloseMenuItem_Click));

      System.Windows.Forms.NotifyIcon notifyIcon;
      notifyIcon = new System.Windows.Forms.NotifyIcon(components);
      notifyIcon.Icon = System.Drawing.SystemIcons.Application;
      notifyIcon.ContextMenu = contextMenu;
      notifyIcon.Visible = true;

      Application.Run();
    }
  }

  static void CloseMenuItem_Click(object sender, EventArgs e)
  {
    System.Windows.Forms.Application.Exit();
  }
And then in your application, you can just create new forms whenever you want, based on whatever events are triggered.
0
 
Jaime OlivaresSoftware ArchitectCommented:
Traditionally, in your Main method, you use to run a Form to start your application. Use an application context. Have a look to this skeleton:


    static class Program
    {
        public static AppContext Context;
 
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
 
            Context = new AppContext();
            Application.Run(Context);
        }
    }
 
    // Derive your own ApplicationContext class
    public class AppContext : ApplicationContext
    {
        private NotifyIcon MyNotifyIcon;
        // define other fields for your application
 
        public AppContext()
        {
            InitializeComponents();
 
            this.ThreadExit += new EventHandler(AppContext_ThreadExit);
        }
 
        #region Exit events
        void AppContext_ThreadExit(object sender, EventArgs e)
        {
            // some termination tasks
            NotifyIcon.Dispose();
        }
        #endregion
 
        #region Notify icon events
        private void MenuAbout_Click(object sender, EventArgs e)
        {
            AboutForm form = new AboutForm();
            form.ShowDialog();
        }
        private void MenuExit_Click(object sender, EventArgs e)
        {
            Application.ExitThread();
        }
 
        #region Private methods
        private void InitializeComponents()
        {
            // Creates Notify Icon context menu
            ContextMenuStrip contextMenu = new ContextMenuStrip();
            ToolStripMenuItem MenuAbout = new ToolStripMenuItem("About...");
            ToolStripSeparator Separator1 = new ToolStripSeparator();
            ToolStripMenuItem MenuExit = new ToolStripMenuItem("Exit");
 
            contextMenu.ShowCheckMargin = true;
            contextMenu.ShowImageMargin = false;
            contextMenu.Size = new System.Drawing.Size(185, 126);
            contextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
                MenuAbout,
                Separator1,
                MenuExit
            });
 
            MenuAbout.Click += new System.EventHandler(MenuAbout_Click);
            MenuExit.Click += new System.EventHandler(MenuExit_Click);
 
            NotifyIcon = new NotifyIcon();
 
            NotifyIcon.ContextMenuStrip = contextMenu;
            NotifyIcon.Icon = new Icon(Assembly.GetExecutingAssembly().GetManifestResourceStream("YourApp.Resources.note.ico"));
            NotifyIcon.Visible = true;
        }
        #endregion
    }

Open in new window

0
 
EEssamAuthor Commented:
Thanks guys but this is a lot of difficult work. I'm sure there are easier ways. I do not want to completely  get rid of the main form. I have several timers on it, contextMenu and notifyIcon... all visually designed and set. I just don't want to visually show the main form.
0
 
cookreCommented:
form.Hide()
0
 
Jaime OlivaresSoftware ArchitectCommented:
Easiest way is to set the WindowState to FormWindowState.Minimized at design time.
Then implement the Load event and put this.Hide() inside.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now