8 个版本 (1 个稳定版)
1.0.0 | 2023年11月17日 |
---|---|
0.2.2 | 2023年6月16日 |
0.2.1 | 2022年10月22日 |
0.1.1 | 2022年8月4日 |
0.0.0-alpha | 2022年4月20日 |
在 Windows API 中排名 #43
97KB
1K SLoC
planif
是围绕 windows-rs 的 Windows 任务计划程序 API 的构建器模式包装器 (windows-rs).
功能
planif
包提供对 Win32 任务计划程序 API 的易于使用的构建器。
构建器支持以下触发器类型
- 启动
- 每日
- 事件
- 空闲
- 登录
- 每月DOW
- 每月
- 注册
- 时间
- 每周
使用情况
将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
planif = "0.2"
示例
use chrono::prelude::*;
use planif::enums::TaskCreationFlags;
use planif::schedule_builder::{Action, ScheduleBuilder};
use planif::schedule::TaskScheduler;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let ts = TaskScheduler::new()?;
let com = ts.get_com();
let sb = ScheduleBuilder::new(&com).unwrap();
sb.create_daily()
.author("Matt")?
.description("Test Trigger")?
.trigger("test_trigger", true)?
.days_interval(1)?
.action(Action::new("test", "notepad.exe", "", ""))?
.start_boundary(&Local::now().to_rfc3339())?
.build()?
.register("TaskName", TaskCreationFlags::CreateOrUpdate as i32)?;
Ok(())
}
有关更多示例,请参阅 planif/examples
文件夹。文件夹包含创建每个触发器的代码。
触发器设置
所有设置均适用于任务。
文档包含来自 Microsoft 任务计划程序文档 的所有相关信息。
运行示例
在克隆仓库后,可以使用以下方式运行示例
cargo run --example <name>
运行特定示例或,cargo run --examples
运行所有示例。
变更日志
请参阅 变更日志文件。
升级指南 (0.* 到 1.0)
ComRuntime
创建
ComRuntime
现由 TaskScheduler
处理,应使用以下方法创建
let ts = TaskScheduler::new()?;
let com = ts.get_com();
let sb = ScheduleBuilder::new(&com).unwrap();
// ... snip
未初始化
ScheduleBuilder
不再需要手动进行初始化。在1.0版本之前,ScheduleBuilding::uninitalize()
会调用CoUninitialize
,这会有效地关闭COM。如果你创建了多个构建器或调度,这可能会成问题,因为n+1个COM会简单地重用初始COM。
在1.0版本中引入的更改现在会在TaskScheduler
中私藏一个Rc<Com>
。现在当所有引用都释放后,COM的初始化将自动处理。
依赖项
~128MB
~2M SLoC