2017-01-16 6 views
1

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

Program.cs

string[] Arguments = Environment.GetCommandLineArgs(); 

int iCurrentProcessID = -1; 
using (Mutex mutex = new Mutex(true, Arguments[1], out createdNew)) //Finding if application is running or not 
{ 
    Process current = Process.GetCurrentProcess(); 
    iCurrentProcessID = current.Id; 
    if (createdNew) 
    { 
     Application.Run(Frm1); 
    } 
    else 
    {   
     // Process current = Process.GetCurrentProcess(); 
     Process CurrentAutomation = Process.GetProcessById(iCurrentProcessID); 

     string[] strArguments = Environment.GetCommandLineArgs(); 

     if (!string.IsNullOrWhiteSpace(strArguments[2])) 
     { 
      frmMain.strEndtime = strArguments[2];    
     } 

Form.cs

public partial class frmMain : Form 
{ 
    public static string strEndtime; 
    //... 
} 

Значения правильно установлены во втором случае, но не установлены в первом (начатом ранее). Как передать эти значения другому экземпляру моего приложения?

+0

что вы пытаетесь сделать точно? вы хотите установить значение свойства первого экземпляра приложения для аргумента второго экземпляра? – slawekwin

+0

Я хочу использовать второй экземпляр экземпляра в первом экземпляре. – Babu

+0

попробуйте googling что-то вроде «C# pass parameters to running application», например [this] (http://stackoverflow.com/questions/3793997/pass-arguments-to-running-application) может помочь – slawekwin

ответ

1

Как я знаю, вы можете использовать WCF для отправки значений между процессами. Ваше основное приложение выставляет службу WCF через net.pipe. Проверьте это link для получения более подробной информации

 Смежные вопросы

  • Нет связанных вопросов^_^