我用vb制作的软件,其中有一块功能要能够添加新的任务计划,窗体TaskForm的代码如下:
Option Explicit
Dim planName As String'设置自定义类型udtAtInfo的值
Private Sub SetStructvalue(udtAtInfo As AT_INFO, planName As String, filePath As String)
Dim strTime As String
Dim cDay As CheckBox
Dim cmdTask As String
cmdTask = filePath & "\mytask " & planName & " " & filePath
With udtAtInfo
' 改变起始时间的格式。
strTime = Format(dtpTime.Value, "hh:mm")
' 把时间都换算成统一的毫秒单位。
.JobTime = (Hour(strTime) * 3600 + Minute(strTime) * 60) * 1000
'设置你的程序在每天的一定时刻运行。
If cbTask.Text = "每天" Then
For Each cDay In chkWeek
.DaysOfWeek = .DaysOfWeek + 2 ^ cDay.Index
Next cDay
ElseIf cbTask.Text = "每周" Then
'设置你的程序在指定的每星期的某一天运行。
For Each cDay In chkWeek
If cDay.Value = 1 Then
.DaysOfWeek = .DaysOfWeek + 2 ^ cDay.Index
End If
Next cDay
ElseIf cbTask.Text = "每月" Then
' 设置你的程序在指定的每月的某一天运行。
.DaysOfMonth = 2 ^ (Val(txtDate.Text) - 1)
ElseIf cbTask.Text = "一次性" Then
' 设置你的程序为一次性。
.DaysOfMonth = 0
.DaysOfWeek = 0
End If
' 设置允许你的定时程序不受任何影响的执行。
' .Flags = .Flags Or JOB_NONINTERACTIVE
'设置为按预定义执行。
.Flags = .Flags Or JOB_RUN_PERIODICALLY ' 你可以设置你的运行参数。
.Command = StrConv(cmdTask, vbUnicode)
End With
End SubPrivate Sub cmdAddTask_Click() '点击本按钮,添加新的任务计划
'判断周任务表至少选中一天
Dim cDay As CheckBox
Dim dayflag As Boolean
dayflag = False
If cbTask.Text = "每周" Then
For Each cDay In chkWeek
If cDay.Value = 1 Then
dayflag = True
End If
Next cDay
If dayflag = False Then
MsgBox "周任务表无效,请确定您至少选择了一天!", vbOKOnly + 64
Exit Sub
End If
End If Dim lngWin32apiResultCode As Long '函数返回值
Dim strComputerName As String '计算机名
Dim lngJobID As Long '任务计划的ID号
Dim udtAtInfo As AT_INFO
Dim filePath As String
filePath = App.Path
SetStructvalue udtAtInfo, planName, filePath
' 添加你的定时任务。
lngWin32apiResultCode = NetScheduleJobAdd(strComputerName, udtAtInfo, lngJobID)
' 检查你的定时任务是否设置成功,注意windows98返回失败。
If lngWin32apiResultCode = NERR_Success Then
' MsgBox "程序" & lngJobID & "定时设置成功."
AddForm.getJobID lngJobID
AddForm.Enabled = True
Unload TaskForm
Else
MsgBox "任务计划定制失败!请重试", vbOKOnly + 16
End If
End SubPrivate Sub cmdCancel_Click() '点击“取消”按钮
'AddForm.Enabled = True
AddForm.getJobID 0
Unload TaskForm
End SubPrivate Sub Form_Load()
planName = AddForm.txtPlan.Text
TaskForm.Caption = TaskForm.Caption & "_" & planName
'起始时间
Dim d As Date
d = Now
dtpTime.Value = d cbTask.Text = "每天"
Frame1.Visible = False
Frame2.Visible = False
End SubPrivate Sub cbTask_Click() '选择每天,每周,每月,一次性
If cbTask.Text = "每天" Then
Frame1.Visible = False
Frame2.Visible = False
ElseIf cbTask.Text = "每周" Then
Frame1.Visible = True
Frame2.Visible = False
ElseIf cbTask.Text = "每月" Then
Frame1.Visible = False
Frame2.Visible = True
ElseIf cbTask.Text = "一次性" Then
Frame1.Visible = False
Frame2.Visible = False
End If
End Sub点击cmdAddTask按钮就添加了新的任务计划,但是没有按设定的时间启动。请问:是不是必须设置系统帐户和密码才可以启动?如果需要设置系统帐户和密码,需要哪些API函数?或者由别的更好的方法么?请知道帮忙解决一下,给高分
Option Explicit
Dim planName As String'设置自定义类型udtAtInfo的值
Private Sub SetStructvalue(udtAtInfo As AT_INFO, planName As String, filePath As String)
Dim strTime As String
Dim cDay As CheckBox
Dim cmdTask As String
cmdTask = filePath & "\mytask " & planName & " " & filePath
With udtAtInfo
' 改变起始时间的格式。
strTime = Format(dtpTime.Value, "hh:mm")
' 把时间都换算成统一的毫秒单位。
.JobTime = (Hour(strTime) * 3600 + Minute(strTime) * 60) * 1000
'设置你的程序在每天的一定时刻运行。
If cbTask.Text = "每天" Then
For Each cDay In chkWeek
.DaysOfWeek = .DaysOfWeek + 2 ^ cDay.Index
Next cDay
ElseIf cbTask.Text = "每周" Then
'设置你的程序在指定的每星期的某一天运行。
For Each cDay In chkWeek
If cDay.Value = 1 Then
.DaysOfWeek = .DaysOfWeek + 2 ^ cDay.Index
End If
Next cDay
ElseIf cbTask.Text = "每月" Then
' 设置你的程序在指定的每月的某一天运行。
.DaysOfMonth = 2 ^ (Val(txtDate.Text) - 1)
ElseIf cbTask.Text = "一次性" Then
' 设置你的程序为一次性。
.DaysOfMonth = 0
.DaysOfWeek = 0
End If
' 设置允许你的定时程序不受任何影响的执行。
' .Flags = .Flags Or JOB_NONINTERACTIVE
'设置为按预定义执行。
.Flags = .Flags Or JOB_RUN_PERIODICALLY ' 你可以设置你的运行参数。
.Command = StrConv(cmdTask, vbUnicode)
End With
End SubPrivate Sub cmdAddTask_Click() '点击本按钮,添加新的任务计划
'判断周任务表至少选中一天
Dim cDay As CheckBox
Dim dayflag As Boolean
dayflag = False
If cbTask.Text = "每周" Then
For Each cDay In chkWeek
If cDay.Value = 1 Then
dayflag = True
End If
Next cDay
If dayflag = False Then
MsgBox "周任务表无效,请确定您至少选择了一天!", vbOKOnly + 64
Exit Sub
End If
End If Dim lngWin32apiResultCode As Long '函数返回值
Dim strComputerName As String '计算机名
Dim lngJobID As Long '任务计划的ID号
Dim udtAtInfo As AT_INFO
Dim filePath As String
filePath = App.Path
SetStructvalue udtAtInfo, planName, filePath
' 添加你的定时任务。
lngWin32apiResultCode = NetScheduleJobAdd(strComputerName, udtAtInfo, lngJobID)
' 检查你的定时任务是否设置成功,注意windows98返回失败。
If lngWin32apiResultCode = NERR_Success Then
' MsgBox "程序" & lngJobID & "定时设置成功."
AddForm.getJobID lngJobID
AddForm.Enabled = True
Unload TaskForm
Else
MsgBox "任务计划定制失败!请重试", vbOKOnly + 16
End If
End SubPrivate Sub cmdCancel_Click() '点击“取消”按钮
'AddForm.Enabled = True
AddForm.getJobID 0
Unload TaskForm
End SubPrivate Sub Form_Load()
planName = AddForm.txtPlan.Text
TaskForm.Caption = TaskForm.Caption & "_" & planName
'起始时间
Dim d As Date
d = Now
dtpTime.Value = d cbTask.Text = "每天"
Frame1.Visible = False
Frame2.Visible = False
End SubPrivate Sub cbTask_Click() '选择每天,每周,每月,一次性
If cbTask.Text = "每天" Then
Frame1.Visible = False
Frame2.Visible = False
ElseIf cbTask.Text = "每周" Then
Frame1.Visible = True
Frame2.Visible = False
ElseIf cbTask.Text = "每月" Then
Frame1.Visible = False
Frame2.Visible = True
ElseIf cbTask.Text = "一次性" Then
Frame1.Visible = False
Frame2.Visible = False
End If
End Sub点击cmdAddTask按钮就添加了新的任务计划,但是没有按设定的时间启动。请问:是不是必须设置系统帐户和密码才可以启动?如果需要设置系统帐户和密码,需要哪些API函数?或者由别的更好的方法么?请知道帮忙解决一下,给高分
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货