前言 - taskscheduler 说明
Task Scheduler 1.0 的相关操作
Task Scheduler 2.0 的相关操作
Task Scheduler 接口抽象了解 ITaskService 对象
此对象需要依赖 TaskshdWindows 服务,如果此服务被关闭,那么此 COM 对象也将会失效。有关这个 COM 对象在 MSDN 里也有详细提及,想要查看官方的在线连接,点击这里。
对于 TaskScheduler 2.0 的操作,开发通常包括以下常见步骤:
- 调用
CoInitialize()
来初始化 COM,代码片段如下所示:
CoInitialize(NULL);
- 调用
CoInitializeSecurity()
来设置进程安全,避免被杀毒软件误报。代码如下所示:
CoInitializeSecurity(
NULL,
-1,
NULL,
NULL,
RPC_C_AUTHN_LEVEL_PKT_PRIVACY,
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL,
0,
NULL
);- 使用
CoCreateInstance()
函数来初始化一个ITaskService
对象。代码片段如下所示:
ITaskService *m_pService = NULL;
CoCreateInstance(CLSID_TaskScheduler,
NULL,
CLSCTX_INPROC_SERVER,
IID_ITaskService,
(void **)&m_pService);- 在 Task Scheduler 2.0 中,与 1.0 不同的是需要通过
ITaskService
对象的Connect()
方法来连接到对应的 Windows 服务程序。代码片段如下所示:
m_pService->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t());
- 调用
ITaskService
对象中提供的各种操作方法,来执行相应的操作。如下图所示:


- 操作完成后,调用
CoUninitialize()
来释放 COM。在此之前,需要对各个 COM 对象(如ITaskService
等)执行Release()
函数进行内存释放。如果使用了智能指针来管理这些对象,那么可以省略这一步(^__^)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/3ff55afdf16fea13cf00f29dddc53948 原文链接:https://www.php.cn/link/c8377ad2a50fb65de28b11cfc628d75c










