带Rust的Windows上的生成过程

时间:2019-06-16 00:54:26

标签: windows process rust

我在Windows 10上,尝试使用std::process::Command生成进程。我想使用Command::new("cmd")打开某些应用程序,然后传递一个参数。例如,我想传递start ms-settings:windowsupdatestart ms-settings:appsfeatures,这将在“ Windows设置”中打开“ Windows Update”和“应用和功能”。但是,就目前情况而言,一次不能打开多个“ 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:进程,因为不能有多个实例。有没有一种方法可以一次生成一个这些进程,而不必同时生成命令提示符?

0 个答案:

没有答案