0

我有一个 WPF 应用程序,它将像桌面一样运行,具有某些可用的应用程序,例如 Microsoft Edge 浏览器。我可以打开它的多个窗口,向自定义任务栏添加一个按钮,但问题是,你可以按名称找到进程,但是按钮/程序不知道要打开哪个正确的窗口。如果我按 ID 搜索,VS 会给我:

System.ArgumentException:'Process with an Id of #### is not running'

由于 Microsoft 它自己更改了它开头的初始 ID 的 ID。

因此,我现在用于尝试获取正确窗口的方法是:

public void NewTabClick(object sender, RoutedEventArgs e)
        {
            //NewTabClick is a click event that gets created with every new button
            MessageBox.Show("NewTabClicked");

            ShowWindow(GetWindowHandle(), 3);

        }


private IntPtr GetWindowHandle()
        {
            try
            {
                //Here is where i get the exception error
                return Process.GetProcessById(ProcessId).MainWindowHandle;

            }
            catch (NullReferenceException)
            {
                return IntPtr.Zero;
            }
        }

当我们以这样的另一种方法启动应用程序本身时,就会设置 ProcessId

 private void StartApp()
        {
            
                var process = Process.Start(ProgramPath);
                SetProcessId(process);
            

        }
private void SetProcessId(Process process)
        {
            ProcessId = process.Id;
        }

有没有办法跟踪/更改/更新它应该查找的 ID,或者有另一种方法来跟踪这些窗口/浏览器?

提前致谢!

4

0 回答 0