53 lines
2 KiB
Python
53 lines
2 KiB
Python
import pythoncom, time, win32api
|
|
from win32com.taskscheduler import taskscheduler
|
|
test_task_name='test_addtask_1.job'
|
|
|
|
ts=pythoncom.CoCreateInstance(taskscheduler.CLSID_CTaskScheduler,None,
|
|
pythoncom.CLSCTX_INPROC_SERVER,taskscheduler.IID_ITaskScheduler)
|
|
|
|
tasks=ts.Enum()
|
|
for task in tasks:
|
|
print(task)
|
|
if test_task_name in tasks:
|
|
print('Deleting existing task '+test_task_name)
|
|
ts.Delete(test_task_name)
|
|
|
|
new_task=pythoncom.CoCreateInstance(taskscheduler.CLSID_CTask,None,
|
|
pythoncom.CLSCTX_INPROC_SERVER,taskscheduler.IID_ITask)
|
|
ts.AddWorkItem(test_task_name,new_task) ## task object is modified in place
|
|
|
|
new_task.SetFlags(taskscheduler.TASK_FLAG_INTERACTIVE|taskscheduler.TASK_FLAG_RUN_ONLY_IF_LOGGED_ON)
|
|
new_task.SetIdleWait(1,10000)
|
|
new_task.SetComment('test task with idle trigger')
|
|
new_task.SetApplicationName('c:\\python23\\python.exe')
|
|
new_task.SetPriority(taskscheduler.REALTIME_PRIORITY_CLASS)
|
|
new_task.SetParameters('-c"import win32ui,time;win32ui.MessageBox(\'why aint you doing no work ?\');"')
|
|
new_task.SetWorkingDirectory('c:\\python23')
|
|
new_task.SetCreator('test_addtask_1.py')
|
|
new_task.SetAccountInformation(win32api.GetUserName(),None)
|
|
## None is only valid for local system acct or if Flags contain TASK_FLAG_RUN_ONLY_IF_LOGGED_ON
|
|
|
|
|
|
run_time = time.localtime(time.time() + 30)
|
|
end_time = time.localtime(time.time() + 60*60*24)
|
|
|
|
tr_ind, tr=new_task.CreateTrigger()
|
|
tt=tr.GetTrigger()
|
|
tt.TriggerType=taskscheduler.TASK_EVENT_TRIGGER_ON_IDLE
|
|
tt.Flags=taskscheduler.TASK_TRIGGER_FLAG_HAS_END_DATE
|
|
|
|
tt.BeginYear=int(time.strftime('%Y',run_time))
|
|
tt.BeginMonth=int(time.strftime('%m',run_time))
|
|
tt.BeginDay=int(time.strftime('%d',run_time))
|
|
tt.StartMinute=int(time.strftime('%M',run_time))
|
|
tt.StartHour=int(time.strftime('%H',run_time))
|
|
|
|
tt.EndYear=int(time.strftime('%Y',end_time))
|
|
tt.EndMonth=int(time.strftime('%m',end_time))
|
|
tt.EndDay=int(time.strftime('%d',end_time))
|
|
|
|
tr.SetTrigger(tt)
|
|
print(new_task.GetTriggerString(tr_ind))
|
|
|
|
pf=new_task.QueryInterface(pythoncom.IID_IPersistFile)
|
|
pf.Save(None,1)
|