使用Microsoft Edge打开PDF时,Process.Start不返回任何内容

时间:2018-07-03 11:05:13

标签: .net process microsoft-edge

到目前为止,Acrobat Reader已打开PDF。 当我这样做时...

Dim iProcIDPDF As Integer = System.Diagnostics.Process.Start(PATH_TO_PDF_FILE).Id

...一切都很好,我得到了进程ID。

现在,我让Microsoft Edge用相同的代码为我打开PDF,打开了PDF,但是出现错误“ System.NullReferenceException:未将对象设置为任何实例。System.Diagnostics.Process。开始(...)什么都没有返回。”

这也会产生相同的错误:

Dim iProcIDPDF As Integer = System.Diagnostics.Process.Start("microsoft-edge:" & PATH_TO_PDF_FILE).Id

如何获取Edge的进程ID?

谢谢。

2 个答案:

答案 0 :(得分:1)

Microsoft Edge的processid是管理Edge的选项卡的应用程序的processid,因为每个选项卡都是一个进程,您不会使用Process.Start()获得该值。由于Edge是现代应用程序,因此您将不得不检查如何从HostedApplication获取进程。

如果Internet Explorer是显示PDF的那个,那么您将无法获得显示它的过程,就这么简单(以防万一)。

答案 1 :(得分:0)

有关返回值,请参见System.Diagnostics.Process.Start(String fileName)文档:

  

与流程资源关联的新流程;如果为null,则为null   没有启动过程资源。

在您的情况下,您将获得一个空返回值(并且由于不对此进行测试并引用了Id属性,因此您收到“对象未设置为任何实例”错误)。由于Edge已经在运行,因此您可能会得到一个空值,因此没有启动新进程。

要检索正在运行的进程的进程ID,您可能需要使用System.Diagnostics.Process.GetProcessesByName。