Запуск оболочки: AppsFolder из VB.NET с дополнительным параметром и получение контроля над событием выхода - PullRequest
0 голосов
/ 30 октября 2018

Я создал программу, которая имеет функциональность для запуска приложений с вашего компьютера из формы VB.NET и управления ими (например, зная, когда приложение закрывается и выполняет некоторые необходимые действия).

С обычными приложениями, такими как notepad.exe, у меня нет проблем, чтобы сделать это:

Dim pHelp As New ProcessStartInfo With {
    .FileName = "notepad.exe",
    .Arguments = "c:\prueba.txt",
    .UseShellExecute = True,
    .WindowStyle = ProcessWindowStyle.Normal
}
proc = New Process
proc = Process.Start(pHelp)
proc.EnableRaisingEvents = True 
AddHandler proc.Exited, AddressOf ProcExited

При этом открывается указанный файл .txt, и когда я закрываю notepad.exe, запускается событие ProcExited (а затем я читаю файл txt и вставляю его в базу данных).

Теперь мне нужно настроить приложение Windows 10 (Sketchbook). Я нашел, как запустить приложение Windows, используя этот код:

Dim pHelp As New ProcessStartInfo With {
    .FileName = "explorer.exe",
    .Arguments = 
    "shell:AppsFolder\89006A2E.AutodeskSketchBook_tf1gferkr813w!App",
    .UseShellExecute = False,
    .WindowStyle = ProcessWindowStyle.Normal
}

Но я столкнулся с двумя проблемами.

Во-первых, если я попытаюсь передать имя файла в приложении SketchBook следующим образом:

 Dim pHelp As New ProcessStartInfo With {
                        .FileName = "explorer.exe",
                        .Arguments = "shell:AppsFolder\89006A2E.AutodeskSketchBook_tf1gferkr813w!App c:\prueba.png",
                        .UseShellExecute = False,
                        .WindowStyle = ProcessWindowStyle.Normal
                }

Он открывает файловый менеджер вместо приложения, как будто он выполняет только файл explorer.exe, а не само приложение, похоже, что ему не нравится параметр "c: \ prova.png", стоящий позади.

И с другой стороны, вторая проблема заключается в том, что событие ProcExited срабатывает и в момент запуска приложения SketchBook. Похоже, что оно привязывает вышедшее событие к explorer.exe вместо приложения Sketchbook. Есть ли способ привязать вышедший Proc к приложению SketchBook вместо explorer.exe?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...