最大化系统托盘中的应用?
-
26-09-2019 - |
题
我写了一个小的WPF应用程序,当“关闭”“关闭”将系统托盘(客户需求)最小化时。双击弹出,或右键单击给出上下文菜单以退出。
但是,如果将应用程序最小化,并且用户导航到start-> alling程序 - >应用程序启动了新实例。
如果用户执行此操作而不是启动新实例,我需要做什么(在C#中)来获取该应用程序以最大化运行实例?
谢谢!
解决方案
这个 回答 来自乔恩·斯基特(Jon Skeet
Mutex是必经之路。它比使用过程名称等要脆弱得多。
但是,您需要确保未收集Mutex。对于服务(这是事件驱动而不是具有完成完成的“主要”方法),最明智的方法可能是将其放置在静态变量中。
服务停止时处理互斥X,因此您无需等待最终确定或类似的内容。
马修·布林德利(Matthew Brindley)在同一问题中给出了这个示例 他的回答
[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());
}
}
为了最大化其他应用程序,您需要将其发送消息以最大化。请参阅本文 消息发送
不隶属于 StackOverflow