繁体   English   中英

在WPF中引入另一个流程

[英]Bringing another process to front in WPF

我有一个WPF应用程序。 单击按钮后,在应用程序内部,我创建了一个新过程以打开一个新的应用程序,例如以下视图模型中的代码。

var process = Process.Start(binaryLocation
                                  + @"\TestApp.exe", powDBop + " " + mDBop);

processID = process.Id;

工作正常。 现在的问题是,如果用户再次单击该按钮,我将检查该进程是否仍在运行,如果还存在,则需要将该应用程序的窗口置于最前面

为此,我尝试下面的代码。 但这是失败的。

var winHandle = Process.GetProcessById(process.Id).MainWindowHandle;
HwndSource hwndSource = HwndSource.FromHwnd(winHandle);
var window = hwndSource.RootVisual as Window;
window.BringIntoView();
window.Activate();

hwndSource尚未设置,并且保持为空。

我什至尝试使用下面的代码,并且窗口仍然返回null。

var winHandle = Process.GetProcessById(process.Id).MainWindowHandle;
Window window = (Window) HwndSource.FromHwnd(winHandle).RootVisual;

任何人?

我认为您可以使用以下代码来做到这一点

var process = Process.Start(binaryLocation
                                  + @"\TestApp.exe", powDBop + " " + mDBop);

  SetForegroundWindow(process.MainWindowHandle);

 [DllImport("user32.dll")]
 private static extern bool SetForegroundWindow(IntPtr hWnd);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM