开发者

Maximize application in system tray?

开发者 https://www.devze.com 2023-02-02 12:28 出处:网络
I wrote a little WPF app that when \'closed\' minimizes to the system tray (customer requirement).Double clicking pops it back up, or开发者_如何学编程 right click gives a context menu to exit.

I wrote a little WPF app that when 'closed' minimizes to the system tray (customer requirement). Double clicking pops it back up, or开发者_如何学编程 right click gives a context menu to exit.

But if the app is minimized, and the users navigate to Start->All Programs->The Application it starts a new instance.

What (in C#) do I need to do to get the app to maximize the running instance if the user does this rather than fire up a new instance?

Thanks!


This answer from Jon Skeet discusses using a mutex to do it

Mutex is the way to go. It's a lot less fragile than using process names etc.

However, you need to make sure the Mutex isn't garbage collected. In the case of a service (which is event driven rather than having a "main" method which runs to completion), the most sensible way of doing this is probably to put it in a static variable.

Dispose of the mutex when the service stops, so you don't need to wait for finalization or anything like that.

Matthew Brindley gives this example in the same question for 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());
   }
}

To maximize the other application you'll need to send it the message to maximize. See this article on message sending

0

精彩评论

暂无评论...
验证码 换一张
取 消