anbei einen beispiel um die eingetragene zeitgestäuerte(at,windows scheduler) jobs aufzulisten.
Ciao
jpd
Code: Alles auswählen
; ***********************************************
; *
; * 'NetScheduleJobEnum.pb'
; *
; * Author: jpd
; * Created: October 2007
; * Version: PureBasic V4.02,V4.10b4
; *
; ***********************************************
#NERR_Success = 0
#MAX_PREF_LEN = -1
#ERROR_MORE_DATA = 234
#JOB_RUN_PERIODICALLY = 1
#JOB_EXEC_ERROR = 2
#JOB_RUNS_TODAY = 4
#JOB_ADD_CURRENT_DATE = 8
#JOB_NONINTERACTIVE = 16
Structure _AT_ENUM
JobId.l
JobTime.l
DaysOfMonth.l
DaysOfWeek.b
flags.b
dummy.w
Command.l
EndStructure
Procedure.s SchedEnumFlags(flags.l)
Protected GetFlagStatus.s
Select flags
Case 1: GetFlagStatus = " JOB_RUN_PERIODICALLY "
Case 2: GetFlagStatus = " JOB_EXEC_ERROR "
Case 4: GetFlagStatus= " JOB_RUNS_TODAY "
Case 8: GetFlagStatus = " JOB_ADD_CURRENT_DATE "
Case 16: GetFlagStatus = " JOB_NONINTERACTIVE "
EndSelect
ProcedureReturn GetFlagStatus
EndProcedure
Procedure SchedEnum(Computername.s)
Computername=RemoveString(Computername, "\" )
Computername="\\"+Computername
CompilerIf #PB_Compiler_Unicode
lngApiResult = NetScheduleJobEnum_(Computername,@*Buffer, #MAX_PREF_LEN,@lngEntriesRead, @lngTotalEntries,#Null)
CompilerElse
comp.s = Space(10)
PokeS(@comp, computername, -1, #PB_Unicode)
lngApiResult = NetScheduleJobEnum_(@comp,@*Buffer, #MAX_PREF_LEN,@lngEntriesRead, @lngTotalEntries,#Null)
CompilerEndIf
If lngApiResult = #NERR_SUCCESS And success <> #ERROR_MORE_DATA And lngEntriesRead <>0
nStructSize = SizeOf(_AT_ENUM)
For cnt = 0 To lngEntriesRead - 1
*Sched._AT_ENUM =*buffer +nStructSize*cnt
Debug *sched\JobId
Debug SchedEnumFlags(*Sched\flags)
Debug *sched\DaysOfWeek
Debug *sched\DaysOfMonth
Debug FormatDate("%hh:%ii:%ss",*sched\JobTime/1000)
Debug PeekS(*Sched\Command, -1, #PB_Unicode)
Next
EndIf
NetApiBufferFree_(*Buffer)
EndProcedure
SchedEnum("jpd-pc")