Я создал программу, которая имеет функциональность для запуска приложений с вашего компьютера из формы 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?