Как передать аргументы командной строки уже запущенному процессу? - PullRequest
5 голосов
/ 28 декабря 2010

Я пишу программу управления контактами.Я знаю, как читать аргументы командной строки и выполнять разные методы в зависимости от того, что я нахожу.

Например, program.exe "John Doe" запустит новый экземпляр программы и откроет первый найденный контакт по имени ДжонДоу, program.exe -s John запустит новый экземпляр программы и выполнит поиск контактов с именем «Джон», тогда как простое выполнение program.exe откроет запуск нового экземпляра программы с пустым экраном поиска.

IОднако хотелось бы запустить только один экземпляр программы.Поэтому, когда другая программа вызывает program.exe "John Doe", если процесс уже запущен, аргументы будут переданы этому процессу и переключены на новый поиск, а не на открытие нового окна.

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

Ответы [ 3 ]

4 голосов
/ 28 декабря 2010

http://www.hanselman.com/blog/TheWeeklySourceCode31SingleInstanceWinFormsAndMicrosoftVisualBasicdll.aspx

В Visual Basic dll есть WindowsFormsApplicationBase с событием StartupNextInstance, в котором вы можете получить аргументы второго экземпляра, а второй экземпляр может уничтожить себя при обнаружении других экземпляров.* Об этом уже спрашивали C #: как - приложение единственного экземпляра, которое принимает новые параметры?

1 голос
/ 28 декабря 2010

Одним из способов сделать это было бы, если бы program.exe содержал службу WCF (как вы, вероятно, догадались из своего тега).Затем, когда запускается другой экземпляр с аргументами командной строки, он будет клиентом WCF для этой службы, отправит аргументы службе и завершит работу.

1 голос
/ 28 декабря 2010

может быть этот пост может вам помочь. См. Здесь, , также использующий канал IPC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...