1

我使用 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中阅读了一些问题,但没有运气。我需要在这段代码中修改什么?提前致谢!

4

2 回答 2

2

您可以使用 Mutex 来完成此操作。是 CodePlex 的一个附加解决方案,它很容易集成到您的程序中。该解决方案确实提供了以下功能:

  • 如果第一个实例最小化到系统托盘(又名“通知区域”),则将其还原
  • 激活第一个实例
  • 防止第二个实例打开
于 2013-02-03T23:45:03.153 回答
0

用不同的想法检查这个问题和答案,以获得已经运行的应用程序实例。并检查此链接 - http://msdn.microsoft.com/en-us/magazine/cc163741.aspx(查看互斥锁)。

于 2013-02-03T23:42:58.107 回答