0

我正在使用http://www.codeproject.com/KB/cs/tsnewlib.aspx库来列出在登录或启动时触发的任务

ScheduledTasks st = new ScheduledTasks();

            foreach (string taskName in st.GetTaskNames())
            {
                using (Task task = st.OpenTask(taskName))
                {

                        listBox1.Items.Add(taskName);

                }
            }

我应该使用什么条件来仅列出启动或登录任务

4

1 回答 1

1

您需要枚举Triggersfor eachtask并对任务执行某些操作,将其存储以备后用,或者将名称存储在过滤的Task对象名称列表中。您的选择过程是检查Trigger是 aOnLogonTrigger还是 a,OnSystemStartTrigger然后您可以将该任务选择到最终列表中。

例如

List<string> startupAndLogonTasks = new List<string>();
foreach (string taskName in st.GetTaskNames()) {
    using (Task task = st.OpenTask(taskName)) {
        if (task != null) {
            foreach (Trigger tr in task.Triggers) {
                if (tr is OnSystemStartTrigger || tr is OnLogonTrigger) {
                    //  Do something, such as log the name, or store the task for later
                    startupAndLogonTasks.Add(task.Name);
                    //  break out and move to the next task
                    break;
                }
            }
        }
    }
}

当然,如果您想要只有登录或启动类型的任务,那么还要检查您在Triggers集合中只有 1 个触发器。

于 2013-05-12T17:08:53.013 回答