NetScheduleJobEnum

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
jpd
Beiträge: 380
Registriert: 14.02.2005 10:33

NetScheduleJobEnum

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

PB 5.10 Windows 7 x64