gpt4 book ai didi

windows - 是否可以使用标准库来生成进程而不在 Windows 中显示控制台窗口?

转载 作者:行者123 更新时间:2023-12-03 11:42:04 25 4
gpt4 key购买 nike

这就是我现在拥有的:

Command::new("/path/to/application")
.args("-param")
.spawn()

看起来 Rust 使用 CreateProcessW 来运行 Windows 进程,它允许创建标志。也许有一个标志可以满足我的需要?

最佳答案

您可以使用 std::os::windows::process::CommandExt::creation_flags .请参阅 Process Creation Flags 的文档页面或者理想情况下使用 winapi 中的常量.

您写道,这是一个 GUI 应用程序,所以我假设您不需要此应用程序的控制台输出。 DETACHED_PROCESS不创建conhost.exe,但如果你想处理输出你应该使用CREATE_NO_WINDOW .

我还建议使用 start 作为命令,否则您将不得不使用 cmd.exe,这可能会延迟启动几毫秒。

示例

use std::process::Command;
use std::os::windows::process::CommandExt;

const CREATE_NO_WINDOW: u32 = 0x08000000;
const DETACHED_PROCESS: u32 = 0x00000008;

let mut command = Command::new("cmd").args(&["/C", "start", &exe_path]);
command.creation_flags(DETACHED_PROCESS); // Be careful: This only works on windows

// If you use DETACHED_PROCESS you could set stdout, stderr, and stdin to Stdio::null() to avoid possible allocations.

关于windows - 是否可以使用标准库来生成进程而不在 Windows 中显示控制台窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59692146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com