Seite 1 von 1

NetScheduleJobEnum

Verfasst: 22.10.2007 15:01
von jpd
Hi,

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")