Я на Windows 10, и пытаюсь порождать процессы с std::process::Command
. Есть некоторые приложения, которые я хочу открыть с помощью Command::new("cmd")
, а затем передать аргумент. Например, я хочу передать start ms-settings:windowsupdate
, а также start ms-settings:appsfeatures
, что откроет «Центр обновления Windows» и «Приложения и компоненты» в «Настройках Windows». Однако в существующем состоянии нельзя одновременно открывать более одного экземпляра «Параметры Windows». Итак, я хочу открывать эти конкретные процессы по одному, и когда я закрываю один процесс, я хочу, чтобы другой процесс порождался. Единственный способ, которым мне удалось это сделать, это сделать:
let processes = [
"start ms-settings:windowsupdate",
"start ms-settings:appsfeatures"
]
for process in &processes {
Command::new("cmd")
.arg("/K")
.arg(&process)
.creation_flags(0x00000010) // CREATE_NEW_CONSOLE
.status()
.expect("Process could not be spawned.");
}
, который работает, но он откроет командную строку, когда появится первый процесс, и единственный способ вызвать следующий процесс - закрыть командную строку, которую открывает первый процесс (в отличие от простого закрытия самого окна). Я пробовал другие флаги в .creation_flags()
, но другие флаги будут открывать все процессы одновременно, поэтому будет открыт только последний start ms-settings:
процесс, поскольку не может быть более одного экземпляра. Есть ли способ порождать эти процессы по одному, не вызывая при этом также командную строку?