我正在构建一个 Windows 窗体应用程序,我想通过我的应用程序使用特定 URL 打开“Microsoft Edge”,并等待用户关闭 Edge 窗口。

我用这个代码试了一下:

using (Process p = Process.Start("microsoft-edge:www.mysite.com"))
{
    p.WaitForExit();
}

当我执行此代码时,Edge 使用正确的 URL 启动......但得到了一个空对象引用。我从 Process.Start 得到的“p”对象为空。

我认为这与 Windows 应用程序的重用有关。

有没有人有解决方法/知道如何等待用户关闭 Edge?

最佳答案

最后我确实做到了:
当您启动 Edge 时(至少)会创建两个进程:
MicrosoftEdge 和 MicrosoftEdgeCP。

MicrosoftEdgeCP - foreach 选项卡。所以我们可以“等待”这个刚刚创建的新选项卡进程。

//Edge process is "recycled", therefore no new process is returned.
Process.Start("microsoft-edge:www.mysite.com");

//We need to find the most recent MicrosoftEdgeCP process that is active
Process[] edgeProcessList = Process.GetProcessesByName("MicrosoftEdgeCP");
Process newestEdgeProcess = null;

foreach (Process theprocess in edgeProcessList)
{
    if (newestEdgeProcess == null || theprocess.StartTime > newestEdgeProcess.StartTime)
    {
        newestEdgeProcess = theprocess;
    }
}

newestEdgeProcess.WaitForExit();

10-08 02:25