Может ли .NET проверить параметры командной строки других запущенных программ? - PullRequest
2 голосов
/ 04 сентября 2008

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

Ответы [ 3 ]

4 голосов
/ 04 сентября 2008

Вы можете получить эту информацию через WMI.

См. Класс Win32_Process , в частности его свойство командной строки. В этой статье Code Project содержатся указания, как это сделать,

2 голосов
/ 04 сентября 2008

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

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

-Adam

0 голосов
/ 24 сентября 2008

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

try
{
   ManagementScope connectScope = new ManagementScope();
   connectScope.Path = new ManagementPath(@"\\" + Environment.MachineName + @"\root\CIMV2");

   SelectQuery msQuery = new SelectQuery("SELECT * FROM Win32_Process Where Name = '" + "PROGRAMNAMEHERE.exe" + "'");
   ManagementObjectSearcher searchProcedure = new ManagementObjectSearcher(connectScope, msQuery);

   foreach (ManagementObject item in searchProcedure.Get())
   {
      try 
      {
         MessageBox.Show(item["CommandLine"].ToString()); 
      }
      catch (SystemException) 
      {}
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...