c# - 单击桌面快捷方式时从系统托盘恢复应用程序

标签 c# winforms system-tray

我创建了一个应用程序,它在启动时会在系统托盘中启动。我使用下面的帖子来实现这一点: How to start WinForm app minimized to tray?

此应用程序也只允许单个实例运行: http://www.codeproject.com/Articles/32908/C-Single-Instance-App-With-the-Ability-To-Restore

我遇到的问题是当我第一次启动应用程序时它最小化到系统托盘,但是如果我单击桌面图标它不会出现。我必须单击托盘中的图标才能恢复应用程序。如果我再次将它最小化,然后单击它出现的桌面图标。

这是我第二次尝试 winform 应用程序,是否与 SetVisibleCore 有关?

任何指向正确方向的指示都会很棒。

最佳答案

如果你让你的 WinForms 应用程序成为单例,那么让最小化的窗口还原是很容易的,

http://www.hanselman.com/blog/TheWeeklySourceCode31SingleInstanceWinFormsAndMicrosoftVisualBasicdll.aspx

这只是使用 Microsoft.VisualBasic.ApplicationServices 命名空间中的 WindowsFormsApplicationBase 的另一种变体。比使用 Mutex 更容易/更好。

你可能会改变

    void this_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
    {
        Form1 form = MainForm as Form1; //My derived form type
        form.LoadFile(e.CommandLine[1]);
    }

    void this_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
    {
        Form1 form = MainForm as Form1; //My derived form type
        form.Show();
        form.WindowState = FormWindowState.Normal;
    }

关于c# - 单击桌面快捷方式时从系统托盘恢复应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529370/

相关文章:

c# - 如何通过 CSOM 从 SharePoint 获取用户?

c# - 如何将字典值作为通用列表获取

c# - Selenium phantomjs webdriver,如何使用 session ?

c# - ListView 的来源 - Windows 窗体 c#

c# - Winforms WebBrowser 设置最大内容宽度

java - 系统托盘 displayMessage() 不显示

c# - 找出集合中的差异

c# - 不移动光标修改文本框

java - 将 JPopupMenu 添加到 TrayIcon

javafx-2 - 将 JavaFx fxml 或 JavaFx swing 应用程序隐藏到系统托盘