Merge pull request #4557 from 21pages/wakelock2

keep server device awake if have connection
This commit is contained in:
RustDesk
2023-06-05 23:27:55 +08:00
committed by GitHub
6 changed files with 344 additions and 11 deletions

View File

@@ -40,7 +40,9 @@ use winapi::{
winbase::*,
wingdi::*,
winnt::{
TokenElevation, HANDLE, PROCESS_QUERY_LIMITED_INFORMATION, TOKEN_ELEVATION, TOKEN_QUERY,
TokenElevation, ES_AWAYMODE_REQUIRED, ES_CONTINUOUS, ES_DISPLAY_REQUIRED,
ES_SYSTEM_REQUIRED, HANDLE, PROCESS_QUERY_LIMITED_INFORMATION, TOKEN_ELEVATION,
TOKEN_QUERY,
},
winreg::HKEY_CURRENT_USER,
winuser::*,
@@ -2121,6 +2123,30 @@ pub fn is_process_consent_running() -> ResultType<bool> {
.output()?;
Ok(output.status.success() && !output.stdout.is_empty())
}
pub struct WakeLock;
// Failed to compile keepawake-rs on i686
impl WakeLock {
pub fn new(display: bool, idle: bool, sleep: bool) -> Self {
let mut flag = ES_CONTINUOUS;
if display {
flag |= ES_DISPLAY_REQUIRED;
}
if idle {
flag |= ES_SYSTEM_REQUIRED;
}
if sleep {
flag |= ES_AWAYMODE_REQUIRED;
}
unsafe { SetThreadExecutionState(flag) };
WakeLock {}
}
}
impl Drop for WakeLock {
fn drop(&mut self) {
unsafe { SetThreadExecutionState(ES_CONTINUOUS) };
}
}
pub fn uninstall_service(show_new_window: bool) -> ResultType<()> {
let filter = format!(" /FI \"PID ne {}\"", get_current_pid());