我知道这可能不是很好的做法,但仍然是我想实现的。

我有一个wpf windows应用程序,我只想运行一个实例。如果用户尝试再次启动程序,则将显示讲话程序已在运行的情况下显示。此检查是在app.xaml.cs中执行的。

到目前为止这么好。一切都按预期工作。

我想扩展此功能,以缩义,并将程序的主窗口带到用户桌面的前面,在其他窗口和应用程序中。我尝试了众多方法,但不能让它工作。这也应该在app.xaml.cs中发生,其中我测试应用程序是否已经运行。

在WPF中不可能这样做?我试过Pinvokes和其他东西,但似乎没有什么对我有用的。

最好的问候

nicki

有帮助吗?

解决方案 2

我发现了一个解决方案。

向VisualBasic添加引用,可以访问Interactive.appActivate,它可以给定CourceID的任何进程,我已经已经实现了。

这个页面给了我解决方案在c#

我以下面的方式检查运行过程

Process currentProcess = Process.GetCurrentProcess();
        var runningProcess = (from process in Process.GetProcesses()
                              where
                                process.Id != currentProcess.Id &&
                                process.ProcessName.Equals(
                                  currentProcess.ProcessName,
                                  StringComparison.Ordinal)
                              select process).FirstOrDefault();
        if (runningProcess != null)
        {
            Microsoft.VisualBasic.Interaction.AppActivate(runningProcess.Id);
            return;
        }
.

其他提示

你试过激活它吗?

Application.Current.MainWindow.Activate();
. 当然,如果你喜欢它在各时间留在上面,而不是:

Application.Current.MainWindow.Topmost = true;
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top