簡體   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