Rust windows scheduler API rust运行计划任务
https://microsoft.github.io/windows-docs-rs/doc/windows/Win32/System/TaskScheduler/index.html
https://github.com/ShaoDaTao/windows-taskscheduler-api-rust
// use std::time::Duration;
// use windows_taskscheduler::{TaskAction, RunLevel, Task, TaskIdleTrigger};
use std::time::Duration;
use windows_taskscheduler::RegisteredTask;
use windows_taskscheduler::TaskAction;
use windows_taskscheduler::TaskLogonTrigger;
use windows_taskscheduler::{RunLevel, Task, TaskIdleTrigger};
fn main() -> windows_taskscheduler::Result<()> {
// const TASK_NAME: &str = "open_notepad_when_idle";
// let _registered_task = create_task(TASK_NAME)?;
let registered_task = Task::get_task(r"\", r"do")?;
println!("{:?}", ®istered_task.name());
assert_eq!(registered_task.name()?, registered_task.name()?);
registered_task.run_raw()?;
println!("{:?}", registered_task.last_run_time()?);
println!("{:?}", registered_task.next_run_time()?);
// Task::delete_task(r"\", TASK_NAME)?;
Ok(())
}
fn create_task(name: &str) -> windows_taskscheduler::Result<RegisteredTask> {
let idle_trigger = TaskIdleTrigger::new(
"idletrigger",
Duration::from_secs(3 * 60),
true,
Duration::from_secs(10 * 60),
);
// requires admin rights
let _logon_trigger = TaskLogonTrigger::new(
"logontrigger",
Duration::from_secs(3 * 60),
true,
Duration::from_secs(10),
Duration::from_secs(1),
);
let action = TaskAction::new("action", "notepad.exe", "", "");
Task::new(r"\")?
.idle_trigger(idle_trigger)?
// .logon_trigger(logon_trigger)?
.exec_action(action)?
.principal(RunLevel::LUA, "", "")?
.set_hidden(false)?
.register(name)
}
浙公网安备 33010602011771号