type
TAT_INFO = record
JobTime: DWord;
DaysOfMonth: DWord;
DaysOfWeek: UCHAR;
Flags: UCHAR;
Command: PWideChar;
end;
PAT_INFO = ^TAT_INFO;
NET_API_STATUS = LongInt;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function NetScheduleJobAdd(ServerName: PWideChar; Buffer: PAT_INFO; var JobID: PDWord): NET_API_STATUS;stdcall;
var
Form1: TForm1;
implementation
{$R *.DFM}
function NetScheduleJobAdd; external 'netapi32.dll' name 'NetScheduleJobAdd';
procedure TForm1.Button1Click(Sender: TObject);
var
ATInfo:PAT_Info;
jobid:PDword;
begin
getmem(atinfo,sizeof(TAt_info));
getmem(jobid,sizeof(dword));
atinfo^.jobtime:=3*60*60*1000+15*60*1000;//miliseconds from midnight to 3:15
atinfo^.DaysOfMonth:=4294967295;
atinfo^.DaysOfWeek:=255;
atinfo^.command:='c:\showok.exe';
atinfo^.flags:=8;
if NetScheduleJobAdd(nil,atinfo,jobid)<>2 then
showmessage('ok');
freemem(jobid);
freemem(atinfo);
end;
有api可以用
type
TAT_INFO = record
JobTime: DWord;
DaysOfMonth: DWord;
DaysOfWeek: UCHAR;
Flags: UCHAR;
Command: PWideChar;
end;
PAT_INFO = ^TAT_INFO;
NET_API_STATUS = LongInt;
function NetScheduleJobAdd(ServerName: PWideChar; Buffer: PAT_INFO; var JobID: LongInt): NET_API_STATUS; external 'netapi32.dll' name 'NetScheduleJobAdd';
Parameters
Servername
Pointer to a Unicode string containing the name of the remote server on which the function is to execute. A NULL pointer or string specifies the local computer.
Buffer
Pointer to a buffer containing an AT_INFO structure describing the job to be submitted.
JobId
Pointer to a job identifier for a newly submitted job. This entry is valid only if the function returns successfully.
AT_INFO:
Members
JobTime
Time of day at which a job is scheduled to run. Time is a local time at a computer on which the Schedule service is running. Time is measured from midnight and is expressed in milliseconds.
DaysOfMonth
Bitmask for the days of the month on which a job is scheduled to run. The bitmask is NULL if a job was scheduled to run only once at the first occurrence of JobTime. For each bit that is set in the bitmask a job will run at JobTime on a corresponding day of the month. Bit 0 corresponds to the first day of the month, and so on.
DaysOfWeek
Bitmask for the days of the week on which the job is scheduled to run. The bitmask is NULL if a job was scheduled to run only once at the first occurrence of JobTime. For each bit that is set in the bitmask a job will run at JobTime on a corresponding day of the week. Bit 0 corresponds to Monday (first day of the week), and so on.
Flags
Bitmask describing job properties. For job submission (NetScheduleJobAdd), the possible values are:
JOB_RUN_PERIODICALLY
If this flag bit is set, the job runs on every day for which corresponding bits in DaysOfMonth or DaysOfWeek are set. If this flag bit is clear, then job runs only once for each bit that was set in DaysOfMonth or DaysOfWeek at the time of job submission.
JOB_ADD_CURRENT_DATE
When this flag bit is set, the job will also execute at the first occurrence of JobTime at the computer to which the job is submitted. In other words, setting this flag bit is equivalent to setting the corresponding day bit in the DaysOfMonth bitmask.
For job information retrieval (NetScheduleJobEnum and NetScheduleJobGetInfo), possible values are:
JOB_RUN_PERIODICALLY
This flag bit is equal to the original value of this flag bit when a job was submitted.
JOB_EXEC_ERROR
This flag bit is set whenever Schedule service failed to successfully execute this job the last time it was supposed to run.
JOB_RUNS_TODAY
This flag bit is set if JobId is larger than the current time of day at the computer at which this job is queued.
Command
Pointer to a Unicode string that contains the name of the command, batch program, or binary file to execute.