privacy_mode_win_magnifier: remove unused win event hook
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
		
							parent
							
								
									fc1af7b0d9
								
							
						
					
					
						commit
						376c042666
					
				| @ -19,8 +19,6 @@ | |||||||
| // https://slhck.info/video/2017/03/01/rate-control.html
 | // https://slhck.info/video/2017/03/01/rate-control.html
 | ||||||
| 
 | 
 | ||||||
| use super::*; | use super::*; | ||||||
| #[cfg(windows)] |  | ||||||
| use crate::ui::win_privacy::win_event_hook; |  | ||||||
| use hbb_common::tokio::sync::{ | use hbb_common::tokio::sync::{ | ||||||
|     mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender}, |     mpsc::{unbounded_channel, UnboundedReceiver, UnboundedSender}, | ||||||
|     Mutex as TokioMutex, |     Mutex as TokioMutex, | ||||||
| @ -307,16 +305,13 @@ pub fn test_create_capturer(privacy_mode_id: i32, timeout_millis: u64) -> bool { | |||||||
| fn check_uac_switch(privacy_mode_id: i32, captuerer_privacy_mode_id: i32) -> ResultType<()> { | fn check_uac_switch(privacy_mode_id: i32, captuerer_privacy_mode_id: i32) -> ResultType<()> { | ||||||
|     if captuerer_privacy_mode_id != 0 { |     if captuerer_privacy_mode_id != 0 { | ||||||
|         if privacy_mode_id != captuerer_privacy_mode_id { |         if privacy_mode_id != captuerer_privacy_mode_id { | ||||||
|             if !win_event_hook::is_process_consent_running()? { |             if !crate::ui::win_privacy::is_process_consent_running()? { | ||||||
|                 bail!("consent.exe is running"); |                 bail!("consent.exe is running"); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         //if win_event_hook::is_desktop_switched() {
 |         if crate::ui::win_privacy::is_process_consent_running()? { | ||||||
|         if win_event_hook::is_process_consent_running()? { |  | ||||||
|             //        win_event_hook::reset_desktop_switch();
 |  | ||||||
|             bail!("consent.exe is running"); |             bail!("consent.exe is running"); | ||||||
|         } |         } | ||||||
|         //}
 |  | ||||||
|     } |     } | ||||||
|     Ok(()) |     Ok(()) | ||||||
| } | } | ||||||
| @ -347,13 +342,14 @@ fn run(sp: GenericService) -> ResultType<()> { | |||||||
|     #[cfg(windows)] |     #[cfg(windows)] | ||||||
|     let mut captuerer_privacy_mode_id = privacy_mode_id; |     let mut captuerer_privacy_mode_id = privacy_mode_id; | ||||||
|     #[cfg(windows)] |     #[cfg(windows)] | ||||||
|     if win_event_hook::is_process_consent_running()? { |     if crate::ui::win_privacy::is_process_consent_running()? { | ||||||
|         captuerer_privacy_mode_id = 0; |         captuerer_privacy_mode_id = 0; | ||||||
|     } |     } | ||||||
|     log::debug!( |     log::debug!( | ||||||
|         "Try create capturer with captuerer privacy mode id {}", |         "Try create capturer with captuerer privacy mode id {}", | ||||||
|         captuerer_privacy_mode_id, |         captuerer_privacy_mode_id, | ||||||
|     ); |     ); | ||||||
|  | 
 | ||||||
|     if privacy_mode_id != captuerer_privacy_mode_id { |     if privacy_mode_id != captuerer_privacy_mode_id { | ||||||
|         log::info!("In privacy mode, but show UAC prompt window for now"); |         log::info!("In privacy mode, but show UAC prompt window for now"); | ||||||
|     } else { |     } else { | ||||||
|  | |||||||
| @ -314,6 +314,13 @@ fn wait_find_privacy_hwnd(msecs: u128) -> ResultType<HWND> { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | pub fn is_process_consent_running() -> ResultType<bool> { | ||||||
|  |     let output = std::process::Command::new("cmd") | ||||||
|  |         .args(&["/C", "tasklist | findstr consent.exe"]) | ||||||
|  |         .output()?; | ||||||
|  |     Ok(output.status.success() && !output.stdout.is_empty()) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| #[tokio::main(flavor = "current_thread")] | #[tokio::main(flavor = "current_thread")] | ||||||
| async fn set_privacy_mode_state( | async fn set_privacy_mode_state( | ||||||
|     conn_id: i32, |     conn_id: i32, | ||||||
| @ -552,95 +559,6 @@ pub(super) mod privacy_hook { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub mod win_event_hook { |  | ||||||
|     use hbb_common::{bail, lazy_static, ResultType}; |  | ||||||
|     use std::sync::Mutex; |  | ||||||
|     use winapi::{ |  | ||||||
|         shared::{ |  | ||||||
|             minwindef::DWORD, |  | ||||||
|             ntdef::{LONG, NULL}, |  | ||||||
|             windef::{HWINEVENTHOOK, HWND}, |  | ||||||
|             winerror::RPC_E_CHANGED_MODE, |  | ||||||
|         }, |  | ||||||
|         um::{ |  | ||||||
|             combaseapi::{CoInitializeEx, CoUninitialize}, |  | ||||||
|             objbase::COINIT_MULTITHREADED, |  | ||||||
|             winuser::{ |  | ||||||
|                 SetWinEventHook, UnhookWinEvent, EVENT_SYSTEM_DESKTOPSWITCH, WINEVENT_OUTOFCONTEXT, |  | ||||||
|                 WINEVENT_SKIPOWNPROCESS, |  | ||||||
|             }, |  | ||||||
|         }, |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     lazy_static::lazy_static! { |  | ||||||
|         static ref DESKTOP_SWITCH: Mutex<bool> = Mutex::new(false); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     pub fn is_desktop_switched() -> bool { |  | ||||||
|         *DESKTOP_SWITCH.lock().unwrap() |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     pub fn reset_desktop_switch() { |  | ||||||
|         *DESKTOP_SWITCH.lock().unwrap() = false; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     pub struct WinEventHook { |  | ||||||
|         hook: HWINEVENTHOOK, |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     impl WinEventHook { |  | ||||||
|         fn create() -> ResultType<Self> { |  | ||||||
|             unsafe { |  | ||||||
|                 if RPC_E_CHANGED_MODE == CoInitializeEx(NULL, COINIT_MULTITHREADED) { |  | ||||||
|                     bail!("Failed CoInitializeEx with RPC_E_CHANGED_MODE"); |  | ||||||
|                 } |  | ||||||
| 
 |  | ||||||
|                 let hook = SetWinEventHook( |  | ||||||
|                     EVENT_SYSTEM_DESKTOPSWITCH, |  | ||||||
|                     EVENT_SYSTEM_DESKTOPSWITCH, |  | ||||||
|                     NULL as _, |  | ||||||
|                     Some(hook_win_event), |  | ||||||
|                     0, |  | ||||||
|                     0, |  | ||||||
|                     WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS, |  | ||||||
|                 ); |  | ||||||
|                 Ok(Self { hook }) |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     impl Drop for WinEventHook { |  | ||||||
|         fn drop(&mut self) { |  | ||||||
|             unsafe { |  | ||||||
|                 UnhookWinEvent(self.hook); |  | ||||||
|                 CoUninitialize(); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     #[no_mangle] |  | ||||||
|     pub extern "system" fn hook_win_event( |  | ||||||
|         _hook: HWINEVENTHOOK, |  | ||||||
|         event: DWORD, |  | ||||||
|         _hwnd: HWND, |  | ||||||
|         _id_object: LONG, |  | ||||||
|         _id_child: LONG, |  | ||||||
|         _dw_event_thread: DWORD, |  | ||||||
|         _dwms_event_time: DWORD, |  | ||||||
|     ) { |  | ||||||
|         if event == EVENT_SYSTEM_DESKTOPSWITCH { |  | ||||||
|             *DESKTOP_SWITCH.lock().unwrap() = true; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     pub fn is_process_consent_running() -> ResultType<bool> { |  | ||||||
|         let output = std::process::Command::new("cmd") |  | ||||||
|             .args(&["/C", "tasklist | findstr consent.exe"]) |  | ||||||
|             .output()?; |  | ||||||
|         Ok(output.status.success() && !output.stdout.is_empty()) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| mod test { | mod test { | ||||||
|     #[test] |     #[test] | ||||||
|     fn privacy_hook() { |     fn privacy_hook() { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user