如何将WPF Windows应用程序集中到App.xaml.cs
题
我知道这可能不是很好的做法,但仍然是我想实现的。
我有一个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;
. 不隶属于 StackOverflow