先试试 FreeConsole
This commit is contained in:
parent
6a707f891b
commit
b474aa7ef9
@ -18,7 +18,7 @@ pub struct Config {
|
||||
pub chdir: Option<PathBuf>,
|
||||
pub bin: PathBuf,
|
||||
pub config: Option<String>,
|
||||
pub bin_arg: String,
|
||||
pub bin_arg: Vec<String>,
|
||||
}
|
||||
|
||||
impl Display for Config {
|
||||
@ -42,7 +42,6 @@ impl Config {
|
||||
let mut bin: Option<String> = None;
|
||||
let dir: Option<String> = None;
|
||||
let mut config: Option<String> = None;
|
||||
let mut bin_arg = "".to_string();
|
||||
// -- 表示后面的参数都是可执行文件的参数
|
||||
let args: Vec<String> = std::env::args().collect();
|
||||
// 先检查有没有 --help
|
||||
@ -52,14 +51,11 @@ impl Config {
|
||||
}
|
||||
|
||||
let index = args.iter().position(|x| x == "--");
|
||||
let bin_arg: Vec<String>;
|
||||
if index.is_some() {
|
||||
// 把后面的所有函数拼接一下, 作为可执行文件的参数
|
||||
for i in index.unwrap() + 1..args.len() {
|
||||
bin_arg.push_str(&args[i]);
|
||||
if i != args.len() - 1 {
|
||||
bin_arg.push(' ');
|
||||
}
|
||||
}
|
||||
bin_arg = args[index.unwrap() + 1..].to_vec();
|
||||
} else {
|
||||
bin_arg = Vec::new();
|
||||
}
|
||||
// 先尝试获取指定的控制台参数
|
||||
// --hide 表示隐藏控制台
|
||||
|
@ -18,4 +18,7 @@ fn main() {
|
||||
// 输出相关信息
|
||||
println!("call {}", VERSION);
|
||||
println!("config: {}", config);
|
||||
// 运行
|
||||
#[cfg(windows)]
|
||||
win::run(&config);
|
||||
}
|
||||
|
30
src/win.rs
30
src/win.rs
@ -1,3 +1,29 @@
|
||||
pub fn hide_window() {}
|
||||
use crate::config::Config;
|
||||
use winapi::um::wincon;
|
||||
|
||||
pub fn show_window() {}
|
||||
pub fn call_bin(config: &Config) {
|
||||
// 先切换工作目录
|
||||
if let Some(chdir) = config.chdir.as_ref() {
|
||||
std::env::set_current_dir(chdir).unwrap();
|
||||
}
|
||||
// 调用可执行文件
|
||||
std::process::Command::new(&config.bin)
|
||||
.args(&config.bin_arg)
|
||||
.spawn()
|
||||
.expect("执行失败");
|
||||
}
|
||||
|
||||
pub fn run(config: &Config) {
|
||||
println!("先睡两秒为敬");
|
||||
// 先睡两秒为敬
|
||||
std::thread::sleep(std::time::Duration::from_secs(2));
|
||||
println!("睡醒了");
|
||||
// 尝试 FreeConsole 看看
|
||||
unsafe {
|
||||
wincon::FreeConsole();
|
||||
}
|
||||
println!("FreeConsole 了");
|
||||
// 调用可执行文件
|
||||
call_bin(&config);
|
||||
std::thread::sleep(std::time::Duration::from_secs(2));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user