один экземпляр и уведомление в системном трее

Я работаю над приложением (С# 2.0). Я реализовал в нем один экземпляр. Все отлично. Если я снова запускаю приложение, оно показывает окно сообщения, в котором говорится, что «экземпляр уже запущен».

На самом деле я не хочу показывать сообщение через окно сообщений.

Я хочу показать это сообщение, используя всплывающую подсказку уже запущенного экземпляра (у него есть значок уведомления на панели задач).

Как я могу достичь этого?

Заранее спасибо.


person emeh    schedule 10.08.2009    source источник


Ответы (4)


Вам нужна форма межпроцессное взаимодействие, чтобы сообщить другому экземпляру, что он должен отображать окно сообщения.

В этом случае вы могли бы пойти лучше, чем сказать существующему экземпляру отобразить сообщение, и вместо этого сказать ему восстановить его главное окно (т.е. «развернуть»).

person Neil Barnwell    schedule 10.08.2009
comment
Я рекомендую просто открыть сокет и отправить приложению сигнал пробуждения. Все, что вам нужно, встроено в .NET (посмотрите на классы TcpListener/TcpClient). - person Ron Warholic; 10.08.2009

Вы можете использовать службу WCF внутри своего приложения.

Ваше второе приложение подключается к нему через NetPipe, вызывает метод и закрывается.

Ваше первое приложение получает вызов и всплывает всплывающее уведомление.

person vIceBerg    schedule 10.08.2009

Самый простой способ реализовать один экземпляр и сообщить первому, если запущен второй, уже реализован в .Net. Просто взгляните на следующие ссылки:

Hanselman: единый экземпляр WinForms

OpenWinForms (выберите приложение True Single Instance)

person Oliver    schedule 30.12.2009

Бесплатный набор инструментов CodeFluent Runtime предоставляет SingleInstance для реализации приложения с одним экземпляром:

Вам просто нужно переопределить метод WndProc, чтобы всплывающее уведомление всплывало (подсказка Baloon).

person Antoine Diekmann    schedule 15.09.2014