如何从App.xaml.cs关注WPF窗口应用程序

时间:2014-08-01 10:43:02

标签: wpf app.xaml

我知道这可能不是一个好习惯,但我仍然希望实施。

我有一个WPF Windows应用程序,我只想运行一个实例。如果用户尝试再次启动程序,则会显示一个消息框,告知该程序已在运行。此检查在app.xaml.cs中执行。

到目前为止一切顺利。一切都按预期工作。

我想扩展此功能以提供焦点,并将程序的主窗口置于用户桌面的前端,而不是其他窗口和应用程序。我尝试了很多方法,但无法让它发挥作用。这也应该发生在app.xaml.cs中,我测试应用程序是否已在运行。

在WPF中无法执行此操作?我尝试了pinvokes和其他东西,但似乎没有什么对我有用。

祝你好运

尼基

2 个答案:

答案 0 :(得分:0)

您是否尝试过激活它?

Application.Current.MainWindow.Activate();

当然,如果你喜欢它一直保持在最佳状态:

Application.Current.MainWindow.Topmost = true;

答案 1 :(得分:0)

我找到了解决方案。

添加对VisualBasic的引用可以访问Interactive.AppActivate,它可以激活给定processid的任何进程,我已经实现了该进程。

此页面为我提供了解决方案AppActivate In 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;
        }