test_addtask_1.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import pythoncom, time, win32api
  2. from win32com.taskscheduler import taskscheduler
  3. test_task_name='test_addtask_1.job'
  4. ts=pythoncom.CoCreateInstance(taskscheduler.CLSID_CTaskScheduler,None,
  5. pythoncom.CLSCTX_INPROC_SERVER,taskscheduler.IID_ITaskScheduler)
  6. tasks=ts.Enum()
  7. for task in tasks:
  8. print task
  9. if test_task_name in tasks:
  10. print 'Deleting existing task '+test_task_name
  11. ts.Delete(test_task_name)
  12. new_task=pythoncom.CoCreateInstance(taskscheduler.CLSID_CTask,None,
  13. pythoncom.CLSCTX_INPROC_SERVER,taskscheduler.IID_ITask)
  14. ts.AddWorkItem(test_task_name,new_task) ## task object is modified in place
  15. new_task.SetFlags(taskscheduler.TASK_FLAG_INTERACTIVE|taskscheduler.TASK_FLAG_RUN_ONLY_IF_LOGGED_ON)
  16. new_task.SetIdleWait(1,10000)
  17. new_task.SetComment('test task with idle trigger')
  18. new_task.SetApplicationName('c:\\python23\\python.exe')
  19. new_task.SetPriority(taskscheduler.REALTIME_PRIORITY_CLASS)
  20. new_task.SetParameters('-c"import win32ui,time;win32ui.MessageBox(\'why aint you doing no work ?\');"')
  21. new_task.SetWorkingDirectory('c:\\python23')
  22. new_task.SetCreator('test_addtask_1.py')
  23. new_task.SetAccountInformation(win32api.GetUserName(),None)
  24. ## None is only valid for local system acct or if Flags contain TASK_FLAG_RUN_ONLY_IF_LOGGED_ON
  25. run_time = time.localtime(time.time() + 30)
  26. end_time = time.localtime(time.time() + 60*60*24)
  27. tr_ind, tr=new_task.CreateTrigger()
  28. tt=tr.GetTrigger()
  29. tt.TriggerType=taskscheduler.TASK_EVENT_TRIGGER_ON_IDLE
  30. tt.Flags=taskscheduler.TASK_TRIGGER_FLAG_HAS_END_DATE
  31. tt.BeginYear=int(time.strftime('%Y',run_time))
  32. tt.BeginMonth=int(time.strftime('%m',run_time))
  33. tt.BeginDay=int(time.strftime('%d',run_time))
  34. tt.StartMinute=int(time.strftime('%M',run_time))
  35. tt.StartHour=int(time.strftime('%H',run_time))
  36. tt.EndYear=int(time.strftime('%Y',end_time))
  37. tt.EndMonth=int(time.strftime('%m',end_time))
  38. tt.EndDay=int(time.strftime('%d',end_time))
  39. tr.SetTrigger(tt)
  40. print new_task.GetTriggerString(tr_ind)
  41. pf=new_task.QueryInterface(pythoncom.IID_IPersistFile)
  42. pf.Save(None,1)