1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| Option Explicit
'----------------------------------------------------
'Source:
'http://www.tek-tips.com/viewthread.cfm?qid=794484
'
'----------------------------------------------------
Private Declare Function NetScheduleJobAdd Lib "netapi32.dll" _
(ByVal Servername As String, Buffer As Any, JobID As Long) As Long
Private Type AT_INFO
JobTime As Long
DaysOfMonth As Long
DaysOfWeek As Byte
Flags As Byte
Command As String
End Type
Private Enum JobAdd
JOB_RUN_PERIODICALLY = 1&
JOB_ADD_CURRENT_DATE = 8&
JOB_NONINTERACTIVE = 16&
End Enum
Private Enum sjWeekdays
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
Friday = 16
Saturday = 32
Sunday = 64
End Enum
Private Enum sjDays
d1 = 1
d2 = 2
d3 = 4
d4 = 8
d5 = 16
d6 = 32
d7 = 64
d8 = 128
d9 = 256
d10 = 512
d11 = 1024
d12 = 2048
d13 = 4096
d14 = 8192
d15 = 16384
d16 = 32768
d17 = 65536
d18 = 131072
d19 = 262144
d20 = 524288
d21 = 1048576
d22 = 2097152
d23 = 4194304
d24 = 8388608
d25 = 16777216
d26 = 33554432
d27 = 67108864
d28 = 134217728
d29 = 268435456
d30 = 536870912
d31 = 1073741824
End Enum
Sub Test()
'(ouverture du bloc notes)
vbScheduleJob "notepad.exe", DateAdd("n", 1, Now), JOB_RUN_PERIODICALLY, Wednesday, d4
End Sub
Private Function vbScheduleJob(strCommand As String, sjTime As Date, _
AddFlags As JobAdd, Optional DayOfWeek As sjWeekdays = 0, _
Optional DayOfMonth As sjDays = 0, Optional PCName As String = vbNullString) As Long
Dim myInfo As AT_INFO
Dim JobID As Long
With myInfo
.Command = StrConv(strCommand, vbUnicode)
.Flags = AddFlags
.JobTime = DateDiff("s", "00:00:00", Format(sjTime, "hh:mm:ss")) * 1000
.DaysOfWeek = DayOfWeek
.DaysOfMonth = DayOfMonth
End With
NetScheduleJobAdd PCName, myInfo, JobID
vbScheduleJob = JobID
End Function |
Partager