![](/img/trans.png)
[英]Bringing a user control to the front in Expression Blend, C#, 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.