![](/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.