diff --git a/README.md b/README.md index 139f6f0..b451b76 100644 --- a/README.md +++ b/README.md @@ -20,14 +20,17 @@ Sadly, to keep this WSC stuff even after reboot, defendnot adds itself to the au ## Usage ```commandline -Usage: defendnot-loader [--help] [--version] [--name VAR] [--disable] [--verbose] +Usage: defendnot-loader [--help] [--version] [--name VAR] [--disable] [--verbose] [--silent] [--autorun-as-user] [--disable-autorun] Optional arguments: - -h, --help shows help message and exits - -v, --version prints version information and exits - -n, --name av display name [default: "https://github.com/es3n1n/defendnot"] - -d, --disable disable defendnot - -v, --verbose verbose logging + -h, --help prints help message and exits + --version shows version and exits + -n, --name av display name [default: "https://github.com/es3n1n/defendnot"] + -d, --disable disable defendnot + -v, --verbose verbose logging + --silent do not allocate console + --autorun-as-user create autorun task as currently logged in user + --disable-autorun disable autorun task creation ``` ## Writeup diff --git a/defendnot-loader/core/core.hpp b/defendnot-loader/core/core.hpp index d0fbc2c..7ba208c 100644 --- a/defendnot-loader/core/core.hpp +++ b/defendnot-loader/core/core.hpp @@ -14,6 +14,7 @@ namespace loader { public: std::string name; bool disable; + bool alloc_console; bool verbose; bool from_autorun; AutorunType autorun_type; diff --git a/defendnot-loader/main.cpp b/defendnot-loader/main.cpp index ae557f6..2dfbaf2 100644 --- a/defendnot-loader/main.cpp +++ b/defendnot-loader/main.cpp @@ -11,7 +11,7 @@ namespace { void setup_window(const loader::Config& config) { - if (!config.from_autorun || config.verbose) { + if ((!config.from_autorun || config.verbose) && config.alloc_console) { shared::alloc_console(); } } @@ -68,7 +68,7 @@ namespace { std::println("thanks for using {}", names::kProjectName); std::println("please don't forget to leave a star at {}", names::kRepoUrl); - if (!config.from_autorun) { + if (!config.from_autorun && config.alloc_console) { system("pause"); } } @@ -100,6 +100,7 @@ int main(int argc, char* argv[]) try { program.add_argument("-n", "--name").help("av display name").default_value(std::string(names::kRepoUrl)).nargs(1); program.add_argument("-d", "--disable").help(std::format("disable {}", names::kProjectName)).default_value(false).implicit_value(true); program.add_argument("-v", "--verbose").help("verbose logging").default_value(false).implicit_value(true); + program.add_argument("--silent").help("do not allocate console").default_value(false).implicit_value(true); program.add_argument("--autorun-as-user").help("create autorun task as currently logged in user").default_value(false).implicit_value(true); program.add_argument("--disable-autorun").help("disable autorun task creation").default_value(false).implicit_value(true); program.add_argument("--from-autorun").hidden().default_value(false).implicit_value(true); @@ -117,6 +118,7 @@ int main(int argc, char* argv[]) try { auto config = loader::Config{ .name = program.get("-n"), .disable = program.get("-d"), + .alloc_console = !program.get("--silent"), .verbose = program.get("-v"), .from_autorun = program.get("--from-autorun"), .autorun_type = program.get("--autorun-as-user") ? /// As system on boot is the default value @@ -125,6 +127,10 @@ int main(int argc, char* argv[]) try { .enable_autorun = !program.get("--disable-autorun"), }; + if (!config.alloc_console && config.verbose) { + fatal_print("--silent flag can not be used in combination with --verbose"); + } + setup_window(config); setup_context(config);