我创建了一个应用程序,该应用程序在启动时会在系统托盘中启动。我用下面的帖子来实现这一目标:
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/