В vb.net я пытаюсь найти надежный способ начать новый процесс в скрытом, свернутом, обычном или развернутом окне (как заранее определено пользователем).
Следующий код со значением MyWindowProcessingStyle, установленным надлежащим образом, иногда работает, но не работает:
Dim MyWindowsProcessingStyle As ProcessWindowStyle = ProcessWindowStyle.Maximized
' the above set elsewhere to values of minimized, maximized, hidden, and normal
Dim MyProcess as new Process
Dim MyProcessStartInfo As New ProcessStartInfo
With MyProcessStartInfo
.FileName = Program
.Verb = "open"
.CreateNoWindow = True
.WindowStyle = MyWindowProcessingStyle
.UseShellExecute = True
End With
myProcess.Start(MyProcessStartInfo)
Например, если я использую его для запуска пакетного файла (.bat), он работает надежно 100% времени.
Если, однако, я использую его для запуска калькулятора окна, он вообще не работает. Он просто открывает калькулятор окна так же, как в прошлый раз.
Мне нужно остаться с другими частями в MyProcessStartInfo по причинам, связанным с тем, как работает мое приложение. Соответственно, это наблюдение мне не подходит.
Я пытался отправить нажатия клавиш в приложение после его запуска, например (WIN) (DownArrrow), чтобы свести приложение к минимуму после свершившегося факта - и хотя во многих случаях это работает, в других оно проблематично и ненадежно.
Я также пытался получить идентификатор процесса или дескриптор приложения после его запуска, в надежде, что после этого я смогу использовать различные методы Pinvolke, чтобы получить то, что мне нужно, - но, к сожалению, мне это не удалось .
Любая помощь будет принята с благодарностью.