我知道这可能不是一个好习惯,但我仍然希望实施。
我有一个WPF Windows应用程序,我只想运行一个实例。如果用户尝试再次启动程序,则会显示一个消息框,告知该程序已在运行。此检查在app.xaml.cs中执行。
到目前为止一切顺利。一切都按预期工作。
我想扩展此功能以提供焦点,并将程序的主窗口置于用户桌面的前端,而不是其他窗口和应用程序。我尝试了很多方法,但无法让它发挥作用。这也应该发生在app.xaml.cs中,我测试应用程序是否已在运行。
在WPF中无法执行此操作?我尝试了pinvokes和其他东西,但似乎没有什么对我有用。
祝你好运
尼基
答案 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;
}