我的程序代码如下: unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, URLMon, ShellApi, ExtCtrls;type TWinService = class(TService) Timer1: TTimer; procedure ServiceExecute(Sender: TService); procedure Timer1Timer(Sender: TObject); procedure ServiceCreate(Sender: TObject); private { Private declarations } ifrun:Boolean; Deststr:string; public function GetServiceController: TServiceController; override; { Public declarations } end;var WinService: TWinService;implementation{$R *.DFM}procedure ServiceController(CtrlCode: DWord); stdcall; begin WinService.Controller(CtrlCode); end;function TWinService.GetServiceController: TServiceController; begin Result := ServiceController; end;procedure TWinService.ServiceExecute(Sender: TService); begin Timer1.Enabled:=true; while not Terminated do ServiceThread.ProcessRequests(False); Timer1.Enabled:=false; end;procedure TWinService.Timer1Timer(Sender: TObject); begin if time='12:00' then begin CopyFile(PChar('E:\123\123.dat'),PChar(Deststr),false); end; end; end;procedure TWinService.ServiceCreate(Sender: TObject); var p:PChar; begin ifrun:=false; GetMem(P,255); try GetSystemDirectory(p,254); Deststr:=strpas(p)+'\host.dat'; finally Freemem(p); end; end;end.
procedure TWinService.ServiceExecute(Sender: TService); begin Timer1.Enabled:=true; while not Terminated do Begin // ServiceThread.ProcessRequests(False); Sleep(1); // End; // Timer1.Enabled:=false; end;
procedure TWinService.ServiceExecute(Sender: TService); begin Timer1.Enabled:=true; while not Terminated do Begin // ServiceThread.ProcessRequests(False); application.processMessage; End; // Timer1.Enabled:=false; end;
你里面放个timer,当然100%了。用系统的定时器吧。SetTimer
procedure TWinService.ServiceExecute(Sender: TService); begin Timer1.Enabled:=true; while not Terminated do Begin // ServiceThread.ProcessRequests(False); application.processMessage End; // Timer1.Enabled:=false; end; ----------------------------- application.processMessage;//这个在这里千万不能使用,否则会有预想不到的结果,并且也达不到楼主预期的目的。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, URLMon, ShellApi,
ExtCtrls;type
TWinService = class(TService)
Timer1: TTimer;
procedure ServiceExecute(Sender: TService);
procedure Timer1Timer(Sender: TObject);
procedure ServiceCreate(Sender: TObject);
private
{ Private declarations }
ifrun:Boolean;
Deststr:string;
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;var
WinService: TWinService;implementation{$R *.DFM}procedure ServiceController(CtrlCode: DWord); stdcall;
begin
WinService.Controller(CtrlCode);
end;function TWinService.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;procedure TWinService.ServiceExecute(Sender: TService);
begin
Timer1.Enabled:=true;
while not Terminated do
ServiceThread.ProcessRequests(False);
Timer1.Enabled:=false;
end;procedure TWinService.Timer1Timer(Sender: TObject);
begin
if time='12:00' then
begin
CopyFile(PChar('E:\123\123.dat'),PChar(Deststr),false);
end;
end;
end;procedure TWinService.ServiceCreate(Sender: TObject);
var
p:PChar;
begin
ifrun:=false;
GetMem(P,255);
try
GetSystemDirectory(p,254);
Deststr:=strpas(p)+'\host.dat';
finally
Freemem(p);
end;
end;end.
begin
Timer1.Enabled:=true;
while not Terminated do
Begin //
ServiceThread.ProcessRequests(False);
Sleep(1); //
End; //
Timer1.Enabled:=false;
end;
begin
Timer1.Enabled:=true;
while not Terminated do
Begin //
ServiceThread.ProcessRequests(False);
application.processMessage;
End; //
Timer1.Enabled:=false;
end;
begin
Timer1.Enabled:=true;
while not Terminated do
Begin //
ServiceThread.ProcessRequests(False);
application.processMessage
End; //
Timer1.Enabled:=false;
end;
-----------------------------
application.processMessage;//这个在这里千万不能使用,否则会有预想不到的结果,并且也达不到楼主预期的目的。
--------------------------
在里面使用Timer跟占用CPU资源无关。