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!("{:?}", &registered_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)
}

  

posted @ 2023-08-27 14:44  CrossPython  阅读(133)  评论(0编辑  收藏  举报