Как фокусировать приложение WPF WPR из App.xaml.cs

StackOverflow https://stackoverflow.com//questions/25078470

  •  02-01-2020
  •  | 
  •  

Вопрос

Я знаю, что это не может быть хорошей практикой, но все же это то, что я хотел бы реализовать.

У меня есть приложение WPF Windows, которое я только хочу запустить один экземпляр.Если пользователь пытается снова запустить программу, сообщение Message покажет, что программа уже работает.Эта проверка выполняется в App.xaml.cs.

так далеко так хорошо.Все работает как ожидалось.

Я хотел бы расширить эту функциональность, чтобы оказать фокусировку и принести основной Window программы на переднюю часть рабочего стола пользователя, через другие окна и приложения.Я пробовал многочисленные подходы, но не может заставить его работать.Это также должно произойти в App.xaml.cs, где я проверю, если приложение уже запущено.

Это невозможно сделать в WPF?Я пробовал PinVokes и другие вещи, но ничто не работает для меня.

С наилучшими пожеланиями

Ники

Это было полезно?

Решение 2

Я нашел решение.

Добавление ссылки на VisualBasic дает доступ к Interactive.appaTivate, который может активировать любой процесс, учитывая ProjectID, который я уже реализовал.

Эта страница дала мне решение Appactivate в 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