File tree Expand file tree Collapse file tree 5 files changed +16
-1
lines changed Expand file tree Collapse file tree 5 files changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -877,6 +877,10 @@ inline bool Environment::tracks_unmanaged_fds() const {
877877 return flags_ & EnvironmentFlags::kTrackUnmanagedFds ;
878878}
879879
880+ inline bool Environment::hide_console_windows () const {
881+ return flags_ & EnvironmentFlags::kHideConsoleWindows ;
882+ }
883+
880884bool Environment::filehandle_close_warning () const {
881885 return emit_filehandle_warning_;
882886}
Original file line number Diff line number Diff line change @@ -1198,6 +1198,7 @@ class Environment : public MemoryRetainer {
11981198 inline bool owns_process_state () const ;
11991199 inline bool owns_inspector () const ;
12001200 inline bool tracks_unmanaged_fds () const ;
1201+ inline bool hide_console_windows () const ;
12011202 inline uint64_t thread_id () const ;
12021203 inline worker::Worker* worker_context () const ;
12031204 Environment* worker_parent_env () const ;
Original file line number Diff line number Diff line change @@ -402,7 +402,11 @@ enum Flags : uint64_t {
402402 kNoRegisterESMLoader = 1 << 3 ,
403403 // Set this flag to make Node.js track "raw" file descriptors, i.e. managed
404404 // by fs.open() and fs.close(), and close them during FreeEnvironment().
405- kTrackUnmanagedFds = 1 << 4
405+ kTrackUnmanagedFds = 1 << 4 ,
406+ // Set this flag to force hiding console windows when spawning child
407+ // processes. This is usually used when embedding Node.js in GUI programs on
408+ // Windows.
409+ kHideConsoleWindows = 1 << 5
406410};
407411} // namespace EnvironmentFlags
408412
Original file line number Diff line number Diff line change @@ -558,6 +558,8 @@ void Worker::New(const FunctionCallbackInfo<Value>& args) {
558558 CHECK (args[4 ]->IsBoolean ());
559559 if (args[4 ]->IsTrue () || env->tracks_unmanaged_fds ())
560560 worker->environment_flags_ |= EnvironmentFlags::kTrackUnmanagedFds ;
561+ if (env->hide_console_windows ())
562+ worker->environment_flags_ |= EnvironmentFlags::kHideConsoleWindows ;
561563}
562564
563565void Worker::StartThread (const FunctionCallbackInfo<Value>& args) {
Original file line number Diff line number Diff line change @@ -238,6 +238,10 @@ class ProcessWrap : public HandleWrap {
238238 options.flags |= UV_PROCESS_WINDOWS_HIDE;
239239 }
240240
241+ if (env->hide_console_windows ()) {
242+ options.flags |= UV_PROCESS_WINDOWS_HIDE_CONSOLE;
243+ }
244+
241245 // options.windows_verbatim_arguments
242246 Local<Value> wva_v =
243247 js_options->Get (context, env->windows_verbatim_arguments_string ())
You can’t perform that action at this time.
0 commit comments