Fixed running with console on Windows when compiled as GUI app.
This commit is contained in:
+5
-1
@@ -1,9 +1,10 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "alfis"
|
name = "alfis"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
authors = ["Revertron <rev@revertron.com>"]
|
authors = ["Revertron <alfis@revertron.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
readme = "README.md"
|
||||||
homepage = "https://alfis.name"
|
homepage = "https://alfis.name"
|
||||||
repository = "https://github.com/Revertron/Alfis"
|
repository = "https://github.com/Revertron/Alfis"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
@@ -30,6 +31,9 @@ mio = { version = "0.7", features = ["os-poll", "net"] }
|
|||||||
# for DNS from hermes
|
# for DNS from hermes
|
||||||
derive_more = "0.99.9"
|
derive_more = "0.99.9"
|
||||||
|
|
||||||
|
[target.'cfg(windows)'.dependencies]
|
||||||
|
winapi = { version = "0.3.7", features = ["impl-default", "wincon"]}
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
winres = "0.1"
|
winres = "0.1"
|
||||||
|
|
||||||
|
|||||||
+19
@@ -1,3 +1,6 @@
|
|||||||
|
// With the default subsystem, 'console', windows creates an additional console window for the program.
|
||||||
|
// This is silently ignored on non-windows systems.
|
||||||
|
// See https://msdn.microsoft.com/en-us/library/4cc7ya5b.aspx for more details.
|
||||||
#![windows_subsystem = "windows"]
|
#![windows_subsystem = "windows"]
|
||||||
extern crate web_view;
|
extern crate web_view;
|
||||||
extern crate tinyfiledialogs as tfd;
|
extern crate tinyfiledialogs as tfd;
|
||||||
@@ -8,6 +11,9 @@ use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
|
|||||||
use std::thread;
|
use std::thread;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
#[cfg(windows)]
|
||||||
|
use winapi::um::wincon::{AttachConsole, FreeConsole, ATTACH_PARENT_PROCESS};
|
||||||
|
|
||||||
use rand::RngCore;
|
use rand::RngCore;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use web_view::*;
|
use web_view::*;
|
||||||
@@ -34,6 +40,13 @@ const KEYSTORE_DIFFICULTY: usize = 24;
|
|||||||
const SETTINGS_FILENAME: &str = "alfis.cfg";
|
const SETTINGS_FILENAME: &str = "alfis.cfg";
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
// When linked with the windows subsystem windows won't automatically attach
|
||||||
|
// to the console of the parent process, so we do it explicitly. This fails silently if the parent has no console.
|
||||||
|
#[cfg(windows)]
|
||||||
|
unsafe {
|
||||||
|
AttachConsole(ATTACH_PARENT_PROCESS);
|
||||||
|
}
|
||||||
|
|
||||||
println!("ALFIS 0.1.0");
|
println!("ALFIS 0.1.0");
|
||||||
let args: Vec<String> = env::args().collect();
|
let args: Vec<String> = env::args().collect();
|
||||||
let program = args[0].clone();
|
let program = args[0].clone();
|
||||||
@@ -89,6 +102,12 @@ fn main() {
|
|||||||
} else {
|
} else {
|
||||||
run_interface(context.clone(), miner.clone());
|
run_interface(context.clone(), miner.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Without explicitly detaching the console cmd won't redraw it's prompt.
|
||||||
|
#[cfg(windows)]
|
||||||
|
unsafe {
|
||||||
|
FreeConsole();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn start_dns_server(context: &Arc<Mutex<Context>>, settings: &Settings) {
|
fn start_dns_server(context: &Arc<Mutex<Context>>, settings: &Settings) {
|
||||||
|
|||||||
Reference in New Issue
Block a user