Rust 1.18 ha introdotto un attributo Sottosistema Windows. Spegnere la console con: binari
#![windows_subsystem = "windows"]
la ruggine sono collegati con la toolchain GCC. Per avviare un programma senza generare una finestra della riga di comando, è necessario pass the -mwindows
option to the linker.
Carico has a cargo rustc
mode che può essere utilizzato per passare altri flag a rustc
. Prima che fosse introdotto, there was no known way to pass an option to the compiler with Cargo.
In questi casi, una soluzione è quella di nascondere la finestra dopo che è stato creato:
extern crate winapi;
extern crate user32;
extern crate kernel32;
use std::ptr;
fn hide_console_window() {
let window = unsafe {kernel32::GetConsoleWindow()};
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx
if window != ptr::null_mut() {
unsafe {
user32::ShowWindow(window, winapi::SW_HIDE);
}
}
}
Avrete bisogno di quanto segue nel Cargo.toml compilarlo:
[dependencies]
winapi = "*"
user32-sys = "*"
kernel32-sys = "*"
Possibile eseguirlo da una console o IDE esistente:
fn hide_console_window() {
unsafe { kernel32::FreeConsole() };
}
Questo secondo metodo non funziona per r me perché sto avviando la mia applicazione da un file batch. Vedete, il lotto possiede ancora la console in modo che mantenga il suo aspetto sullo schermo.
Grazie per la risposta così utile. Aspetterò diverse ore per altre risposte e accetto il tuo se non emergerà nulla di meglio :) – Revertron
Certo, sarò felice di apprendere una soluzione pastella anche se ci vorranno tre anni. – ArtemGr
@ArtemGr ['GetConsoleWindow'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms683175%28v=vs.85%29.aspx) restituisce un handle per la finestra della console. –