如何打开“;Microsoft Edge”;从c#开始,然后等待它关闭

本文关键字:然后 等待 开始 何打开 Microsoft Edge | 更新日期: 2023-09-27 18:20:45

我正在构建一个Windows窗体应用程序,我想通过具有特定URL的应用程序打开"Microsoft Edge",然后等待用户关闭Edge窗口。

我用这个代码试过了:

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

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

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

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

如何打开“;Microsoft Edge”;从c#开始,然后等待它关闭

我终于做到了:启动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();

从旧的解决方案-使用WebBrowser控件加载HTML。一旦您取回数据,就可以使用ObjectForScripting调用一个c#方法来通知何时完成。

请参阅http://www.codeproject.com/Tips/130267/Call-a-C-Method-From-JavaScript-Hosted-in-a-WebBrowser