MCPcopy Create free account
hub / github.com/codeyourweb/irma / getTasksRecursively

Function getTasksRecursively

windowstaskscheduler.go:119–221  ·  view source on GitHub ↗
(folder *ole.IDispatch)

Source from the content-addressed store, hash-verified

117}
118
119func getTasksRecursively(folder *ole.IDispatch) (tasks []Task) {
120 var (
121 variant *ole.VARIANT
122 err error
123 )
124 // Get Tasks in subfolders first
125 if variant, err = oleutil.CallMethod(folder, "GetFolders", int64(0)); err != nil {
126 return
127 }
128 folderIterator := variant.ToIDispatch()
129 if variant, err = oleutil.GetProperty(folderIterator, "count"); err != nil {
130 return
131 }
132 count, _ := variant.Value().(int32)
133 for i := int32(1); i <= count; i++ {
134 // Get Tasks of subfolder i
135 index := ole.NewVariant(ole.VT_I4, int64(i))
136 if variant, err = oleutil.GetProperty(folderIterator, "item", &index); err != nil {
137 continue
138 }
139 subfolder := variant.ToIDispatch()
140 subtasks := getTasksRecursively(subfolder)
141 tasks = append(tasks, subtasks...)
142 subfolder.Release()
143 }
144 folderIterator.Release()
145 // Get Tasks
146 if variant, err = oleutil.CallMethod(folder, "GetTasks", int64(0)); err != nil {
147 return
148 }
149 taskIterator := variant.ToIDispatch()
150 if variant, err = oleutil.GetProperty(taskIterator, "count"); err != nil {
151 return
152 }
153 count, _ = variant.Value().(int32)
154 for i := int32(1); i <= count; i++ {
155 // Get Task i
156 index := ole.NewVariant(ole.VT_I4, int64(i))
157 if variant, err = oleutil.GetProperty(taskIterator, "item", &index); err != nil {
158 continue
159 }
160 task := variant.ToIDispatch()
161 var t Task
162 if variant, err = oleutil.GetProperty(task, "name"); err == nil {
163 t.Name = variant.ToString()
164 }
165 if variant, err = oleutil.GetProperty(task, "path"); err == nil {
166 t.Path = variant.ToString()
167 }
168 if variant, err = oleutil.GetProperty(task, "enabled"); err == nil {
169 t.Enabled, _ = variant.Value().(bool)
170 }
171 if variant, err = oleutil.GetProperty(task, "lastRunTime"); err == nil {
172 t.LastRunTime, _ = variant.Value().(time.Time)
173 }
174 if variant, err = oleutil.GetProperty(task, "nextRunTime"); err == nil {
175 t.NextRunTime, _ = variant.Value().(time.Time)
176 }

Callers 1

GetTasksFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected