将命令行参数传递给已运行的应用程序实例

时间:2017-01-16 05:46:43

标签: c# .net winforms ipc

我想将我的应用程序的新实例的命令行参数传递给已经运行的应用程序(如果存在)。到目前为止,我尝试了以下内容:

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;
    //...
}

在第二个实例中正确设置了值,但未在第一个实例(先前启动)中设置。如何将这些值传递给我的应用程序的另一个实例?

1 个答案:

答案 0 :(得分:1)

据我所知,您可以利用WCF在进程之间发送值。您的主应用程序通过net.pipe公开WCF服务。查看此link了解详情