ZBLOG

windows api添加计划任务

要在Windows中添加计划任务,可以使用Windows API提供的函数来实现。下面是一个示例代码,演示如何使用C++和Windows API来添加计划任务:

  1. #include <windows.h>
  2. #include <iostream>
  3. int main() {
  4. LPCWSTR applicationName = L"C:\\path\\to\\your\\program.exe";
  5. LPCWSTR taskName = L"MyTask";
  6. LPCWSTR taskPath = L"\\MyTasks\\";
  7. HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
  8. if (SUCCEEDED(hr)) {
  9. ITaskService *pService = NULL;
  10. hr = CoCreateInstance(CLSID_TaskScheduler, NULL, CLSCTX_INPROC_SERVER,
  11. IID_ITaskService, (void**)&pService);
  12. if (SUCCEEDED(hr)) {
  13. hr = pService->Connect(_variant_t(), _variant_t(),
  14. _variant_t(), _variant_t());
  15. if (SUCCEEDED(hr)) {
  16. ITaskFolder *pRootFolder = NULL;
  17. hr = pService->GetFolder(_bstr_t(taskPath), &pRootFolder);
  18. if (SUCCEEDED(hr)) {
  19. ITaskDefinition *pTask = NULL;
  20. hr = pService->NewTask(0, &pTask);
  21. if (SUCCEEDED(hr)) {
  22. // 设置计划任务属性
  23. pTask->put_RegistrationInfo(registrationInfo);
  24. pTask->put_Settings(settings);
  25. // 创建触发器(定时执行等)
  26. ITriggerCollection *pTriggerCollection = NULL;
  27. hr = pTask->get_Triggers(&pTriggerCollection);
  28. ITrigger *pTrigger = NULL;
  29. hr = pTriggerCollection->Create(TASK_TRIGGER_DAILY, &pTrigger);
  30. // 设置触发器属性(时间等)
  31. pTrigger->put_StartBoundary(startBoundary);
  32. pTrigger->put_EndBoundary(endBoundary);
  33. // 创建操作
  34. IActionCollection *pActionCollection = NULL;
  35. hr = pTask->get_Actions(&pActionCollection);
  36. IAction *pAction = NULL;
  37. hr = pActionCollection->Create(TASK_ACTION_EXEC, &pAction);
  38. // 设置操作属性
  39. IExecAction *pExecAction = NULL;
  40. hr = pAction->QueryInterface(IID_IExecAction, (void**)&pExecAction);
  41. pExecAction->put_Path(applicationName);
  42. // 注册计划任务
  43. IRegisteredTask *pRegisteredTask = NULL;
  44. hr = pRootFolder->RegisterTaskDefinition(
  45. _bstr_t(taskName), pTask,
  46. TASK_CREATE_OR_UPDATE, _variant_t(),
  47. _variant_t(), TASK_LOGON_INTERACTIVE_TOKEN,
  48. _variant_t(L""), &pRegisteredTask);
  49. std::cout << "计划任务已添加!" << std::endl;
  50. if (pService) {
  51. pService->Release();
  52. }
  53. if (pRootFolder) {
  54. pRootFolder->Release();
  55. }
  56. if (pRegisteredTask) {
  57. pRegisteredTask->Release();
  58. }
  59. }
  60. }
  61. }
  62. CoUninitialize();
  63. }
  64. return 0;
  65. }
  66. }

请注意,这只是一个简单的示例代码,并不能保证适用于所有情况。确保根据您的需求进行相应的修改和调整。

此外,请确保您具有足够的权限来添加计划任务。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=18290

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?