使用多文检测和调用启动的进程

本文关键字:调用 启动 进程 检测 文检测 | 更新日期: 2023-09-27 17:56:55

如何使用互斥锁通过 GUID 查找第一个进程并调用其中的函数?就像在Web浏览器中一样,当您尝试第二次启动它时,它只是打开一个新窗口。

// appGuid is const string containing app GUID
using (Mutex mutex = new Mutex(false, "Global''" + appGuid))
{
    if (!mutex.WaitOne(0, false))
    {
        // CODE TO FIND AND CALL FIRST PROCESS AND THEN EXIT
        Environment.Exit(0);
    }
    else
    {
        App app = new App();
        app.InitializeComponent();
        app.Run();
    }
}

使用多文检测和调用启动的进程

我认为有很多

方法可以解决"哦,您打开了第二个实例,但我们只允许一个,所以让我们将您的请求代理到第一个实例"问题。

  • 您可以让主机进程侦听套接字,当互斥锁检测到其已打开时,会调用侦听套接字。也许使用像 .NET 远程处理这样简单的东西,不需要在这里完全成熟的 WCF 或原始套接字写入
  • 您还可以使用共享内存缓冲区并使用共享内存进行写入。 但这需要两个进程之间的同步,所以它可能有点混乱。
  • 您可以只触发一个文件,并让主机进程侦听已知位置中的文件事件。 这可能是最简单、技术含量最低的解决方案

这是 3 个想法,可能还有更多

但是,如果您只想获取流程信息,为什么不按名称查找流程呢?