Process.Start ничего не возвращает при открытии PDF с Microsoft Edge - PullRequest
0 голосов
/ 03 июля 2018

До сих пор PDF-файлы открывались Acrobat Reader. Когда я это сделал ...

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

... все было в порядке, я получил идентификатор процесса.

Теперь я позволил Microsoft Edge открыть PDF-файл для меня с тем же кодом, PDF-файл открывается, но я получаю сообщение об ошибке «System.NullReferenceException: объект не был установлен для какого-либо экземпляра. System.Diagnostics.Process. Start (...) ничего не вернул. "

Это также дает ту же ошибку:

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

Как я могу получить идентификатор процесса Edge?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Microsoft Edge processid - это processid приложения, управляющего вкладками Edge, поскольку каждая вкладка является процессом, и вы не получите это значение с помощью Process.Start (). Вам нужно будет проверить, как получить процессы из HostedApplication, поскольку Edge - современное приложение.

Если Internet Explorer - это тот, который показывает PDF, вы не сможете получить процесс, показывающий его, это просто (в случае, если это имеет значение).

0 голосов
/ 03 июля 2018

См. Документацию System.Diagnostics.Process.Start (String fileName) для возвращаемого значения:

Новый процесс, связанный с ресурсом процесса, или нуль, если ресурс процесса не запущен.

В вашем случае вы получаете нулевое возвращаемое значение (и поскольку не проверяете это и ссылаетесь на свойство Id, вы получаете ошибку 'Object not set to any instance'). Вероятно, вы получите нулевое значение, так как Edge уже запущен, и, следовательно, новый процесс не был запущен.

Чтобы получить идентификатор процесса для запущенного процесса, вы можете использовать System.Diagnostics.Process.GetProcessesByName.

...