У меня есть приложение, которое работает и постоянно отображается на значке в системном трее. Он гарантирует, что это единственный запущенный экземпляр моего приложения, запустив некоторый код, использующий мьютекс @Global.
Из-за ограничений стороннего поставщика единственный (разумный) способ, которым я могу интегрироваться с одной частью приложения поставщика, - это указать в файле конфигурации, что вызывается произвольный исполняемый файл командной строки. Параметры, которые меня интересуют, автоматически добавляются в исполняемый файл, который я указываю.
Поэтому я думаю, что большинство людей, которые интегрировались с этим, запускают отдельную программу, которая подключается к сокету сервера в основной программе и отправляет пакет, сообщающий основной программе, что командная строка запущена.
Мне интересно, есть ли способ сделать этот псевдокод.
static void Main(string[] args)
{
if (isrunningcommandLine)
{
ConnectToAlreadyRunningProcessAndPassInfo(args); // find already running process by its process name and somehow pass the command line params
KillProgram();
}
else
{
CheckGlobalMutexAndStart();
}
}
По сути, если я запускаю через командную строку, подключаюсь к уже запущенному глобальному процессу и передаю ему некоторые данные.
Я контролирую код, который будет клиентом и сервером, это фактически один и тот же проект.