我写了一个小WPF应用程序,当'关闭'最小化到系统托盘(客户需求)。双击会弹出备份,或者右键单击可以退出上下文菜单。最大化系统托盘中的应用程序?
但是,如果应用程序最小化,并且用户导航到开始 - >所有程序 - >应用程序,它将启动一个新的实例。
如果用户这样做而不是激发新实例,我需要做什么才能让应用程序最大化运行实例?
谢谢!
我写了一个小WPF应用程序,当'关闭'最小化到系统托盘(客户需求)。双击会弹出备份,或者右键单击可以退出上下文菜单。最大化系统托盘中的应用程序?
但是,如果应用程序最小化,并且用户导航到开始 - >所有程序 - >应用程序,它将启动一个新的实例。
如果用户这样做而不是激发新实例,我需要做什么才能让应用程序最大化运行实例?
谢谢!
这answer从乔恩斯基特讨论了使用互斥做到这一点
互斥是要走的路。这是很多 比使用进程名称 等脆弱。
但是,您需要确保 互斥不被垃圾收集。在 情况下服务(这是事件 驱动,而不是具有运行到完成“主” 方法),这样做的 最明智的办法就是 可能把它在一个静态变量 。
处置互斥时 停止,所以你不必等待 定稿或任何类似的服务。
马修·布林德利给出了同样的问题,这个例子his answer
[STAThread]
static void Main()
{
using(Mutex mutex = new Mutex(false, "Global\\" + appGuid))
{
if(!mutex.WaitOne(0, false))
{
MessageBox.Show("Instance already running");
return;
}
Application.Run(new Form1());
}
}
要最大化你需要给它发送信息,最大限度其他应用程序。看到这篇文章message sending
完美,谢谢! – Nicros 2011-01-06 05:49:25
查找Mutex对象和抓住一个活动窗口。在我面前没有代码,但这是你需要采取的方向。 - 我撒谎,尝试[这篇文章的.net应用程序的单个实例](http://www.ai.uga.edu/mc/SingleInstance.html) – 2011-01-06 04:46:57