检查是否已打开Microsoft Edge

时间:2019-03-05 10:10:17

标签: .net microsoft-edge mainwindow

我的问题如下:

我目前正在通过.NET代码打开Microsoft Edge,以便能够读取PFD文件。但我只想用PDF文件打开Edge(如果尚未打开)。

Edge的问题在于,该窗口由ApplicationFrameHost托管,该ApplicationFrameHost还托管商店中的其他Windows应用程序,例如Minesweaper。所以当我打开例如用Edge打开我的pdf文件后,Minesweaper,当前的ApplicationFrameHost MainWindowTitle是“ Minesweaper”。

但是,如果我开始执行代码,则应该在开始时检查Edge是否已打开,但是我无法通过ApplicationFrameHost MainWindowTitle进行检查,因为它来自当前活动的ApplicationFrameHost,即“ Minesweaper”,因为我是最后一个活动的ApplicationFrameHost窗口。

即使关闭了Microsoft Edge,我也无法检查MicrosoftEdgeCP进程是否一直在运行。

您对我的问题有解决方案吗?

1 个答案:

答案 0 :(得分:0)

启动Edge(至少)时,将创建两个进程:MicrosoftEdge和MicrosoftEdgeCP。

您可以尝试使用以下代码检查是否打开了Edge浏览器:

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

Process newestEdgeCPProcess = null;

foreach (Process theprocess in EdgeCPProcessList)
{
    if (newestEdgeCPProcess == null || theprocess.StartTime > newestEdgeCPProcess.StartTime)
    {
        newestEdgeCPProcess = theprocess;
        Console.WriteLine("EdgeCP Process: "+theprocess.ProcessName.ToString());
    }
}


Process[] edgeProcessList = Process.GetProcessesByName("MicrosoftEdge");
Process newestEdgeProcess = null;

foreach (Process edgeProcess in edgeProcessList)
{
    if (newestEdgeProcess == null || edgeProcess.StartTime > newestEdgeProcess.StartTime)
    {
        newestEdgeProcess = edgeProcess;
        Console.WriteLine("Edge Process: " + edgeProcess.ProcessName.ToString());
    }
}

Console.ReadKey();

如果我们可以获得ProcessName,则意味着Edge已经打开。上面的代码对我而言效果很好。