NetScheduleJobAdd该怎么用,返回值总是参数错误(200分)

  • 主题发起人 主题发起人 jlnow
  • 开始时间 开始时间
J

jlnow

Unregistered / Unconfirmed
GUEST, unregistred user!
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:=0;
atinfo^.DaysOfWeek:=255;
atinfo^.command:='net.exe';
atinfo^.flags:=$F1;


showmessage(inttostr(NetScheduleJobAdd(nil,atinfo,jobid)));
//
freemem(atinfo);

//freemem(jobid);
 
主要是record和function里的几个类型不对,看看正确的吧
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TAT_INFO = record
JobTime: DWord;
DaysOfMonth: DWord;
DaysOfWeek: UCHAR;
Flags: UCHAR;
Command: LPWSTR;
end;


PAT_INFO = ^TAT_INFO;
NET_API_STATUS = DWORD;

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function NetScheduleJobAdd(ServerName: LPCWSTR; Buffer: pointer; var JobID: Dword): NET_API_STATUS; stdcall;


var
Form1: TForm1;

implementation


function NetScheduleJobAdd; external 'netapi32.dll' name 'NetScheduleJobAdd';
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
ATInfo:PAT_Info;
// ATInfo:PAtInfo;
jobid:Dword;
a:widestring;
s:pwidechar;
begin
getmem(atinfo,sizeof(TAt_info));
atinfo^.jobtime:=3*60*60*1000+15*60*1000;//miliseconds from midnight to 3:15
atinfo^.DaysOfMonth:=0;
atinfo^.DaysOfWeek:=0;
a:='e:/winnt/system32/net.exe';
s:=pwidechar(a);
atinfo^.command:=s;

atinfo^.flags:=1;


showmessage(inttostr(NetScheduleJobAdd(nil,atinfo,jobid)));

freemem(atinfo);
end;

end.
 
接受答案了.
 
后退
顶部