当用户尝试在相同版本下打开新实例时,返回已打开的应用程序?

时间:2011-11-28 23:44:11

标签: c# vb.net

如果我的程序在运行相同版本时已经运行,我想打开现有实例。我注意到这个问题只是要求名称存在,但如果版本较旧,我只想通知用户旧版本仍在运行,请在开始此版本之前删除旧版本。

另一个链接就是这个: Return to an already open application when a user tries to open a new instance但如果检测到旧版本或更新版本,他们不会谈论关闭实例。

1 个答案:

答案 0 :(得分:3)

以最简单的方式,像这样进行检查:

foreach (var proc in Process.GetProcesses())
            if (proc.MainModule.FileName == Process.GetCurrentProcess().MainModule.FileName)
                //Shutdown your copy.

但更复杂的事情可能是这样的:

foreach (var proc in Process.GetProcesses())
        {
            if (proc.Id == Process.GetCurrentProcess().Id) continue;
            var currName = AssemblyName.GetAssemblyName(Process.GetCurrentProcess().MainModule.FileName);
            var procName = AssemblyName.GetAssemblyName(proc.MainModule.FileName);
            if (currName.FullName == procName.FullName && /*and other parameters*/)
                return;
        }
祝你好运!

P.S .:“但要小心 - ”GetAssemblyName“仅适用于托管代码程序集,因此请在try-catch wrap中进行。”