[ RUST ] 프로그램 시작시 콘솔창 숨기기
포스트
취소

[ RUST ] 프로그램 시작시 콘솔창 숨기기

HitCount


Contents


프로그램 시작시 콘솔창 숨기기

프로그램 실행시 콘솔창이 보이지 않게 하기 위한 방법에 대해 설명합니다.
먼저 Cargo.toml의 dependencies에 winapi 크레잇을 추가합니다.

1
2
[dependencies]
winapi = {version = "0.3", features = ["wincon", "winuser"]}

다음으로 작업할 것은 콘솔창이 뜰때 핸들을 얻어와서 숨기는 작업을 해주어야 합니다. 아래의 hide_console_window() 함수는 핸들을 얻어와 윈도우를 숨기는 작업에 관한 내용입니다.

1
2
3
4
5
6
7
8
9
10
11
12
fn hide_console_window() {
    use std::ptr;
    use winapi::um::wincon::GetConsoleWindow;
    use winapi::um::winuser::{ShowWindow, SW_HIDE};

    let window = unsafe {GetConsoleWindow()};
    if window != ptr::null_mut() {
        unsafe {
            ShowWindow(window, SW_HIDE);
        }
    }
}

위의 방법은 간단히 한줄로 표현할 수도 있습니다.

1
2
3
fn hide_console_window() {
    unsafe { winapi::um::wincon::FreeConsole() };
}

두 방법 모두 콘솔창이 띄워졌을 때 바로 숨기는 작업을 합니다. 마지막으로 hide_console_window() 함수를 main 함수에서 호출해 주기만 하면 프로그램 시작시 콘솔창을 바로 숨겨주게 됩니다.

1
2
3
4
fn main() {
	hide_console_window();
	println!("hello, world!!!");
}

단, 콘솔창에서 프로그램을 실행한 경우(즉, 파일탐색기에서 exe 파일을 실행한 경우가 아닌 경우)에는 콘솔의 소유가 실행한 프로그램이 아니기 때문에 콘솔창이 숨겨지지 않습니다. 일반적으로 파일탐색기(또는 단축아이콘)에서 실행하거나, 윈도우 시작시 자동실행 등은 위의 hide_console_window() 함수를 이용하면 콘솔창이 잘 숨겨지는 걸 확인 하실 수 있습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.