• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4204
  • Last Modified:

Run a C# .NET Compact Framework Application in Background

Hi,

I am writing a SMS/Contact backup application, it need to run in the background (may be with an icon in the notification area)? What can I do to achieve it? Say FormBackup need to stay in memory, with a timer, that checks for new SMS etc and does the backup. How can I prevent user from clicking the X button to close it, and only Hide the form.

Thanks
0
retinax
Asked:
retinax
  • 2
  • 2
1 Solution
 
angus_young_acdcCommented:
In your Form_Load put the following:

            this.ControlBox = false; // Hides the minimize, X etc at the top of your form
            this.Hide();             // Will hide the form
0
 
retinaxAuthor Commented:
Ok cool, thanks.

Any idea on the Notification area icon thing?

0
 
dbrckoviCommented:
Create NotifyIcon and ContextMenuStrip controls on the form.
Set setNotifyIcon's ContextMenuStrip property to your context menu.
Set NotifyIcon's Icon property to icon of your choice and set it's Visible property to true.
Create a 'Show form' menu in your context menu strip and fill it with this code:



        private void showFormToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
            this.Visible = true;
        }

Open in new window

0
 
retinaxAuthor Commented:
Thanks, are those controls available only in WM6 professional sdk not standard edition??
0
 
dbrckoviCommented:
I'm sorry for wrong information. I didn't see you were programming in Compact framework.
However you can download notifyicon example for Compact Framework from this page:
http://www.microsoft.com/downloads/details.aspx?familyid=5a8384c0-34a5-47d1-bb50-e5e261288ae3&displaylang=en

Unfortunately I didn't manage to make it show the icon in Pocket PC emulator, but maybe it will work on other version of OS's or on a real device.

You can use it in your project by importing NotifyIcon.cs file, adding reference to Microsoft.WindowsCE.Forms, and using code in code snippet.

I hope this helps.
        private NotifyIcon notifyIcon;
        
        public Form1()
        {
            InitializeComponent();
 
            notifyIcon = new NotifyIcon();
            notifyIcon.Click += new EventHandler(notifyIcon_Click);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            IntPtr hIcon = LoadIcon(GetModuleHandle(null), "notify.ico");
            notifyIcon.Add(hIcon);
            this.Hide();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            notifyIcon.Remove();
        }
 
        [DllImport("coredll.dll")]
        internal static extern IntPtr LoadIcon(IntPtr hInst, string IconName);
 
        [DllImport("coredll.dll")]
        internal static extern IntPtr GetModuleHandle(String lpModuleName);
 
        private void notifyIcon_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Icon Clicked!");
        }

Open in new window

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

Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

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