Windows API - Win32
一组适用于桌面和服务器应用程序的核心 Windows 应用程序编程接口 (API)。 以前称为 Win32 API。
116 个问题
import win32com.client
import datetime as dt
class TaskScheduler:
def __init__(self):
self.scheduler = win32com.client.Dispatch("Schedule.Service")
self.scheduler.Connect()
self.root_folder = self.scheduler.GetFolder("\\")
scheduler = win32com.client.Dispatch("Schedule.Service")
scheduler.Connect()
root_folder = scheduler.GetFolder("\\")
def create_task(self, task_name, trigger_time_str, days_of_week,
action_path = None,action_arguments = None,description = "",
author = ""):
'''
trigger_time_str:"%Y-%m-%d %H:%M:%S"
'''
try:
trigger_time = dt.datetime.strptime(trigger_time_str,"%Y-%m-%d %H:%M:%S")
except ValueError as e:
raise ValueError("Invalid trigger time format. Use ISO 8601 format (YYYY-MM-DDTHH:MM:SS).") from e
# 转换为任务计划程序所需的格式
trigger_time_str_formatted = trigger_time.strftime("%Y-%m-%dT%H:%M:%S")
# 创建一个新的任务定义对象
task_def = self.scheduler.NewTask(0)
task_def = scheduler.NewTask(0)
# 设置任务的注册信息
registration_info = task_def.RegistrationInfo
registration_info.Description = description
registration_info.Author = author # 可以根据实际情况修改
# 设置任务的触发器
trigger = task_def.Triggers.Create(2) # 1 表示时间触发器
trigger.StartBoundary = trigger_time_str_formatted
trigger.DaysInterval = 1 # 对于每周触发器,这个值通常被DaysOfWeek覆盖
trigger.Repetition.Interval = "PT0M" # 不重复
trigger.DaysOfWeek = 127 # 设置触发器适用的星期几
# 设置任务的操作
action = task_def.Actions.Create(0) # 0 表示执行一个程序
if action_path is None:
action.Path = ""
raise ValueError('Parameter:action_path Can Not Be Empty')
else:
action.Path = action_path # 一般是python.exe路径或者.bat文件路径
if action_arguments is None:
action.Arguments = ""
else:
action.Arguments = action_arguments # 要运行的Python脚本的路径
# 注册任务
try:
self.root_folder.RegisterTaskDefinition(
task_name,
task_def,
6, # 创建或更新任务
None, # 安全描述符
None, # 任务登录的用户ID
3 # 使用任务的主机服务账户运行
)
print(f"Task '{task_name}' created successfully.")
except Exception as e:
print(f"Failed to create task '{task_name}': {e}")
就是想在每周指定的日期指定的时间运行某个脚本,但是总报错trigger.DaysOfWeek这个属性无法设置,我该怎么办?