Как фокусировать приложение WPF WPR из App.xaml.cs
Вопрос
Я знаю, что это не может быть хорошей практикой, но все же это то, что я хотел бы реализовать.
У меня есть приложение 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;
.