Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何打开”;“微软边缘”;从c#等它关闭?_C#_.net_Process_Windows 10_Microsoft Edge - Fatal编程技术网

“如何打开”;“微软边缘”;从c#等它关闭?

“如何打开”;“微软边缘”;从c#等它关闭?,c#,.net,process,windows-10,microsoft-edge,C#,.net,Process,Windows 10,Microsoft Edge,我正在构建一个Windows窗体应用程序,我想通过我的应用程序以特定URL打开“Microsoft Edge”,并等待用户关闭Edge窗口 我用以下代码进行了尝试: using (Process p = Process.Start("microsoft-edge:www.mysite.com")) { p.WaitForExit(); } 当我执行此代码时,Edge正在使用正确的URL启动。。。但是得到了一个空的对象引用。我从Process.Start获取的“p”对象为空 我认为这与W

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

我用以下代码进行了尝试:

using (Process p = Process.Start("microsoft-edge:www.mysite.com"))
{
    p.WaitForExit();
}
当我执行此代码时,Edge正在使用正确的URL启动。。。但是得到了一个空的对象引用。我从
Process.Start
获取的“p”对象为空

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


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

来自较旧的解决方案-使用WebBrowser控件加载HTML。一旦获得数据,使用ObjectForScript调用c#方法在完成时进行通知


参见

最后,我做到了: 启动Edge(至少)时,将创建两个进程: MicrosoftEdge和MicrosoftEdge CP

MicrosoftEdge CP-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();

那么,可以创建一个新的流程实例,设置StartInfo属性的文件名和参数成员,并对其调用Start。但是,您是在等待用户关闭您打开的网站,还是退出浏览器?如果您的流程仍然存在,您可以查看流程列表。当用户处理完您的web内容时,应该发生什么情况?为什么应用程序要等待它?听起来你正在走向“媒体中断”,迫使用户在窗口之间跳转。你不能在你的应用程序中显示web内容吗。没有简单的方法可以解决这个问题,你无法判断用户何时关闭选项卡以停止浏览网页。在打开“Edge”之前,我正在启动一个代理。它不能在内部浏览器中完成。我需要特定的边缘浏览器来渲染和显示网站。一旦用户浏览器关闭,我将关闭代理。我需要知道,当用户退出通过我的应用程序打开的浏览器时,网站也可能会打开其他选项卡。但我需要知道当所有选项卡都关闭时(通过打开的边缘应用程序被关闭),它不能在内部浏览器中完成。我需要特定的边缘浏览器来渲染和显示网站。