从系统托盘中恢复程序在c#中单击桌面上的快捷方式

时间:2013-02-03 23:32:29

标签: c# system-tray

我正在使用Visual Studio 2012,Windows窗体。当我点击桌面上的快捷方式时,我需要从系统托盘恢复应用程序。

我使用此代码可防止同一应用程序的双重使用,但不能从系统托盘打开应用程序。

[STAThread]
    static void Main()
    {
        string mutex_id = "my application";
        using (Mutex mutex = new Mutex(false, mutex_id))
        {
            if (!mutex.WaitOne(0, false))
            {
                Form1 fForm;
                fForm = new Form1();
                fForm.Show();
                fForm.WindowState = FormWindowState.Normal;
                fForm.ShowInTaskbar = true;
                // MessageBox.Show("Instance Already Running!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return;
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }

我在stackoverflow中提到了一些问题,没有运气。我需要在这段代码中修改什么?提前谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用Mutex来完成此任务。 Here是CodePlex的一个固定解决方案,很容易整合到您的程序中。该解决方案确实提供了以下功能:

  • 如果将最初的实例最小化到系统托盘(又名 "通知区"),恢复它
  • 激活第一个实例
  • 防止第二个实例开放

答案 1 :(得分:0)

检查this question并获取有关获取已在运行的应用实例的不同想法的答案。并查看此链接 - http://msdn.microsoft.com/en-us/magazine/cc163741.aspx(看看互斥)。