程序功能,每五秒中更新服务的系统时间,为什么线程类中的输出文本文件能执行 FList.Add('123');
FList.SaveToFile('c:\aaaa.txt');而更新时间不能执行呢?
winexec( pchar('net time \\192.168.1.18 /set /y'),SW_hide);
unit ServiceMain;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;type
TSkyThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end; TSkyrityService = class(TService)
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
procedure ServiceExecute(Sender: TService);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceShutdown(Sender: TService);
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
private
{ Private declarations }
FSkyThread: TSkyThread;
FList:TStringList;
public
function GetServiceController: TServiceController; override;
procedure GT;
{ Public declarations }
end;
var
SkyrityService: TSkyrityService;implementationuses MainForm;{$R *.DFM}procedure ServiceController(CtrlCode: DWord); stdcall;
begin
SkyrityService.Controller(CtrlCode);end;function TSkyrityService.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;procedure TSkyrityService.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;procedure TSkyrityService.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;procedure TSkyrityService.ServicePause(Sender: TService;
var Paused: Boolean);
begin
Paused := True;
end;procedure TSkyrityService.ServiceShutdown(Sender: TService);
begin
//gbCanClose := true;
FrmMain.Free;
Status := csStopped;
ReportStatus();
end;procedure TSkyrityService.ServiceStart(Sender: TService;
var Started: Boolean);
begin
Started := True;
flist:= tstringlist.Create;
FSkyThread:= TSkyThread.Create(false);
Svcmgr.Application.CreateForm(TFrmMain, FrmMain);
//gbCanClose := False;
//FrmMain.Hide;
end;procedure TSkyrityService.ServiceStop(Sender: TService;
var Stopped: Boolean);
begin
Stopped := True;
//gbCanClose := True;
FrmMain.Free;
end;procedure TSkyrityService.GT;
begin FList.Add('123');
FList.SaveToFile('c:\aaaa.txt');
winexec( pchar('net time \\192.168.1.18 /set /y'),SW_hide);
end;{ Cservicetest }procedure TSkyThread.Execute;
begin
inherited;
while not Terminated do
begin
SkyrityService.GT;
sleep(5000);
end;
end;
end.
FList.SaveToFile('c:\aaaa.txt');而更新时间不能执行呢?
winexec( pchar('net time \\192.168.1.18 /set /y'),SW_hide);
unit ServiceMain;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;type
TSkyThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end; TSkyrityService = class(TService)
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
procedure ServiceExecute(Sender: TService);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceShutdown(Sender: TService);
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
private
{ Private declarations }
FSkyThread: TSkyThread;
FList:TStringList;
public
function GetServiceController: TServiceController; override;
procedure GT;
{ Public declarations }
end;
var
SkyrityService: TSkyrityService;implementationuses MainForm;{$R *.DFM}procedure ServiceController(CtrlCode: DWord); stdcall;
begin
SkyrityService.Controller(CtrlCode);end;function TSkyrityService.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;procedure TSkyrityService.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;procedure TSkyrityService.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;procedure TSkyrityService.ServicePause(Sender: TService;
var Paused: Boolean);
begin
Paused := True;
end;procedure TSkyrityService.ServiceShutdown(Sender: TService);
begin
//gbCanClose := true;
FrmMain.Free;
Status := csStopped;
ReportStatus();
end;procedure TSkyrityService.ServiceStart(Sender: TService;
var Started: Boolean);
begin
Started := True;
flist:= tstringlist.Create;
FSkyThread:= TSkyThread.Create(false);
Svcmgr.Application.CreateForm(TFrmMain, FrmMain);
//gbCanClose := False;
//FrmMain.Hide;
end;procedure TSkyrityService.ServiceStop(Sender: TService;
var Stopped: Boolean);
begin
Stopped := True;
//gbCanClose := True;
FrmMain.Free;
end;procedure TSkyrityService.GT;
begin FList.Add('123');
FList.SaveToFile('c:\aaaa.txt');
winexec( pchar('net time \\192.168.1.18 /set /y'),SW_hide);
end;{ Cservicetest }procedure TSkyThread.Execute;
begin
inherited;
while not Terminated do
begin
SkyrityService.GT;
sleep(5000);
end;
end;
end.
解决方案 »
- delphi 中如何判断当前form
- 急!!!错误提示:Table does not suppert this operation because it is not uniquely indexed
- ^M=#13 ^A=#1 ^0='p' ^1='q' ...为什么?
- 高分求一个禁止网卡的程序。
- 求使用ole操作word 的详细代码!!!!!!!!!!!!!!!!!?????????????????
- 即放分,也提供资料,超酷的软件界面
- 假文凭的可靠性有多大?????!!!!!!!
- 请教一个老话题:用delphi连接RDBMS的问题
- 如何将查询结果保存到另一个数据库中
- 怎样实现程序的定时关闭?
- 在三层构架中用TClientDataSet来更新数据库时,怎么就只能更新一条记录吗?
- 招Delphi同事
是没有执行还是执行不成功????
0=系统内存或资源不足
2= 文件不存在
3= 路径不存在
11=可执行文件错误 另外,Winexec是为16位程序保留的函数,最好还是用CreateProcess。
所以最好还是用CreateProcess。