我有一个WPF应用程序。在按钮单击期间在应用程序内部,我创建了一个新进程,以便从我的视图模型中打开一个新的应用程序,如下面的代码。
var process = Process.Start(binaryLocation
+ @"\TestApp.exe", powDBop + " " + mDBop);
processID = process.Id;
工作正常。现在的问题是,如果用户再次点击该按钮,我会检查该进程是否处于活动状态,以及该进程是否存活我需要将该应用程序的Window置于最前面。
为此,我尝试了下面的代码。但它失败了。
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;
任何?
答案 0 :(得分:2)
我认为您可以使用以下代码
来完成var process = Process.Start(binaryLocation
+ @"\TestApp.exe", powDBop + " " + mDBop);
SetForegroundWindow(process.MainWindowHandle);
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);