每次看网页太浪费时间了。做了个服务程序,后台运行。好得很!用了indy的IdHTTPGet的地址为: http://apps.manyou.com/1011554/buy.php?flid=*******************************
或者其他类似http://apps.manyou.com/1011554/ 的。看html代码,很容易找的!另外第一次写服务程序,有些地方不是很懂。
1,改服务不能停止,在服务里面停止他会出错。应该怎么修改?
2,据说sleep不能响应控制信号,那应该怎么做?我原来while mmsystem的timegettime,但是cpu消耗太大,怎么做才合理?请教了!还有,发帖子时候说我没有权给200分。我怎么办?unit ser;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IniFiles;type
accessUrl = class(TThread)
protected
IdHTTP1: TIdHTTP;
geturl:string;
procedure Execute;override;
public
Constructor Create(url:string);
end;type
THappyOnline = class(TService)
procedure ServiceCreate(Sender: TObject);
procedure ServiceDestroy(Sender: TObject);
procedure ServiceExecute(Sender: TService);
procedure ThreadDone(Sender: TObject);
private
logrec:TStringList;
spacetime:integer;
geturl:string;
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;var
HappyOnline: THappyOnline;implementation{$R *.DFM}Constructor accessUrl.Create(url:string);
begin
geturl:=url;
IdHTTP1:=TIdHTTP.Create(nil);
FreeOnTerminate:=True;
Inherited Create(False);
end;procedure accessUrl.Execute;
var
body:string;
begin
try
body:=IdHTTP1.Get(geturl);
except
end;
IdHTTP1.Free;
end;procedure ServiceController(CtrlCode: DWord); stdcall;
begin
HappyOnline.Controller(CtrlCode);
end;function THappyOnline.GetServiceController: TServiceController;
begin
Result := @ServiceController;
end;procedure THappyOnline.ServiceCreate(Sender: TObject);
var
conf:Tinifile;
begin
logrec:=TStringList.Create;
conf:=Tinifile.Create(ExtractFilePath(Paramstr(0))+'conf.ini');
geturl:=conf.ReadString('Config', 'URL', '');
logrec.LoadFromFile(ExtractFilePath(Paramstr(0))+'rec.txt');
logrec.Add('Step 0 of:'+DateTimeToStr(now()));
logrec.SaveToFile(ExtractFilePath(Paramstr(0))+'rec.ini');
spacetime:=10*60*1000;
end;procedure THappyOnline.ServiceDestroy(Sender: TObject);
begin
logrec.Free;
end;procedure THappyOnline.ServiceExecute(Sender: TService);
begin
logrec.Add('Step 1 of:'+DateTimeToStr(now()));
logrec.SaveToFile(ExtractFilePath(Paramstr(0))+'rec.ini');
while not Terminated do
begin
with accessurl.Create(geturl) do
OnTerminate:=accDone;
sleep(10*60*1000)
end;
logrec.Add('Step 3 of:'+DateTimeToStr(now()));
logrec.SaveToFile(ExtractFilePath(Paramstr(0))+'rec.ini');
end;procedure THappyOnline.ThreadDone;
begin
logrec.Add('Step 2 of:'+DateTimeToStr(now()));
logrec.SaveToFile(ExtractFilePath(Paramstr(0))+'rec.ini');
end;end.
或者其他类似http://apps.manyou.com/1011554/ 的。看html代码,很容易找的!另外第一次写服务程序,有些地方不是很懂。
1,改服务不能停止,在服务里面停止他会出错。应该怎么修改?
2,据说sleep不能响应控制信号,那应该怎么做?我原来while mmsystem的timegettime,但是cpu消耗太大,怎么做才合理?请教了!还有,发帖子时候说我没有权给200分。我怎么办?unit ser;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IniFiles;type
accessUrl = class(TThread)
protected
IdHTTP1: TIdHTTP;
geturl:string;
procedure Execute;override;
public
Constructor Create(url:string);
end;type
THappyOnline = class(TService)
procedure ServiceCreate(Sender: TObject);
procedure ServiceDestroy(Sender: TObject);
procedure ServiceExecute(Sender: TService);
procedure ThreadDone(Sender: TObject);
private
logrec:TStringList;
spacetime:integer;
geturl:string;
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;var
HappyOnline: THappyOnline;implementation{$R *.DFM}Constructor accessUrl.Create(url:string);
begin
geturl:=url;
IdHTTP1:=TIdHTTP.Create(nil);
FreeOnTerminate:=True;
Inherited Create(False);
end;procedure accessUrl.Execute;
var
body:string;
begin
try
body:=IdHTTP1.Get(geturl);
except
end;
IdHTTP1.Free;
end;procedure ServiceController(CtrlCode: DWord); stdcall;
begin
HappyOnline.Controller(CtrlCode);
end;function THappyOnline.GetServiceController: TServiceController;
begin
Result := @ServiceController;
end;procedure THappyOnline.ServiceCreate(Sender: TObject);
var
conf:Tinifile;
begin
logrec:=TStringList.Create;
conf:=Tinifile.Create(ExtractFilePath(Paramstr(0))+'conf.ini');
geturl:=conf.ReadString('Config', 'URL', '');
logrec.LoadFromFile(ExtractFilePath(Paramstr(0))+'rec.txt');
logrec.Add('Step 0 of:'+DateTimeToStr(now()));
logrec.SaveToFile(ExtractFilePath(Paramstr(0))+'rec.ini');
spacetime:=10*60*1000;
end;procedure THappyOnline.ServiceDestroy(Sender: TObject);
begin
logrec.Free;
end;procedure THappyOnline.ServiceExecute(Sender: TService);
begin
logrec.Add('Step 1 of:'+DateTimeToStr(now()));
logrec.SaveToFile(ExtractFilePath(Paramstr(0))+'rec.ini');
while not Terminated do
begin
with accessurl.Create(geturl) do
OnTerminate:=accDone;
sleep(10*60*1000)
end;
logrec.Add('Step 3 of:'+DateTimeToStr(now()));
logrec.SaveToFile(ExtractFilePath(Paramstr(0))+'rec.ini');
end;procedure THappyOnline.ThreadDone;
begin
logrec.Add('Step 2 of:'+DateTimeToStr(now()));
logrec.SaveToFile(ExtractFilePath(Paramstr(0))+'rec.ini');
end;end.
服务并未返回错误。这可能是一个windows内部错误或服务内部错误。
如果问题持续存在,请与你的系统管理员联系。