我的问题如下:
我目前正在通过.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进程是否一直在运行。
您对我的问题有解决方案吗?
答案 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已经打开。上面的代码对我而言效果很好。