From e06c37338914f9752a3c2e025cd0a3cb2f2697eb Mon Sep 17 00:00:00 2001 From: fufesou Date: Thu, 21 Jul 2022 21:58:42 +0800 Subject: [PATCH] fix_cmd_window: do not show cmd prompt window Signed-off-by: fufesou --- Cargo.lock | 8 ++++++-- src/server/video_service.rs | 6 ++++-- src/ui/win_privacy.rs | 6 +++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c91272112..be6c13915 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -378,9 +378,12 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" +dependencies = [ + "serde 1.0.139", +] [[package]] name = "cache-padded" @@ -3964,6 +3967,7 @@ dependencies = [ "async-process", "async-trait", "base64", + "bytes", "cc", "cfg-if 1.0.0", "clap 3.2.12", diff --git a/src/server/video_service.rs b/src/server/video_service.rs index e6ea713a1..362fe15c5 100644 --- a/src/server/video_service.rs +++ b/src/server/video_service.rs @@ -393,8 +393,10 @@ fn get_capturer(use_yuv: bool) -> ResultType { #[cfg(windows)] let mut captuerer_privacy_mode_id = privacy_mode_id; #[cfg(windows)] - if crate::ui::win_privacy::is_process_consent_running()? { - captuerer_privacy_mode_id = 0; + if captuerer_privacy_mode_id != 0 { + if crate::ui::win_privacy::is_process_consent_running()? { + captuerer_privacy_mode_id = 0; + } } log::debug!( "Try create capturer with captuerer privacy mode id {}", diff --git a/src/ui/win_privacy.rs b/src/ui/win_privacy.rs index 0bbb040ec..9944bf262 100644 --- a/src/ui/win_privacy.rs +++ b/src/ui/win_privacy.rs @@ -5,6 +5,7 @@ use crate::{ use hbb_common::{allow_err, bail, lazy_static, log, tokio, ResultType}; use std::{ ffi::CString, + os::windows::process::CommandExt, sync::Mutex, time::{Duration, Instant}, }; @@ -24,7 +25,9 @@ use winapi::{ CreateProcessAsUserW, GetCurrentThreadId, QueueUserAPC, ResumeThread, PROCESS_INFORMATION, STARTUPINFOW, }, - winbase::{WTSGetActiveConsoleSessionId, CREATE_SUSPENDED, DETACHED_PROCESS}, + winbase::{ + WTSGetActiveConsoleSessionId, CREATE_NO_WINDOW, CREATE_SUSPENDED, DETACHED_PROCESS, + }, winnt::{MEM_COMMIT, PAGE_READWRITE}, winuser::*, }, @@ -317,6 +320,7 @@ fn wait_find_privacy_hwnd(msecs: u128) -> ResultType { pub fn is_process_consent_running() -> ResultType { let output = std::process::Command::new("cmd") .args(&["/C", "tasklist | findstr consent.exe"]) + .creation_flags(CREATE_NO_WINDOW) .output()?; Ok(output.status.success() && !output.stdout.is_empty()) }