我用delphi编写一个nt服务程序,在Execute 写了非常简单的代码(showmessage('aaaa'),,添加到win2000中的服务中去,启动没有反应。
在ServerStartname设为空,password也为空。
我把它设为administrator和我开机密码时,出现错误!
难道还要设置系统服务吗?请各位大虾帮忙!谢谢!
在ServerStartname设为空,password也为空。
我把它设为administrator和我开机密码时,出现错误!
难道还要设置系统服务吗?请各位大虾帮忙!谢谢!
Delphi 调用TService 模块中的OnExecute
事件方法,您可以自行定义该方法。OnExecute 事件方法中所需的基本代码是一
个while 循环,这样服务程序就可以处理请求。
while Not Terminated do
ServiceThread.ProcessRequests(False);
该代码与Windows 中处理信息队列的循环非常相似。ServiceThread 对象是
服务程序中每个服务的专用线程。只要服务尚未被服务控制管理器停止,Not
Terminated的结果都是True。
procedure TMyService.ServiceExecute(Sender: TService);
begin
Timer1.Enabled := True;
while Not Terminated do
ServiceThread.ProcessRequests(False);
Timer1.Enabled := False;
end;注意这里:
可以在其中添加非可视化
控件和服务程序代码。不要在工程源文件中包括Forms和HttpApp单元。SvcMgr、
Forms 和HttpApp 都定义了一个全局的Application 对象,这会导致服务程序中
出现冲突。
服务程序中加showmessage???这还是服务程序吗?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, dialogs,
ExtCtrls;
type
Tserver23 = class(TService)
Timer1: TTimer;
procedure ServiceExecute(Sender: TService);
procedure Timer1Timer(Sender: TObject);
private
public
function GetServiceController: TServiceController; override;
end;var
server23: Tserver23;
logfile:textfile;
implementation{$R *.DFM}procedure ServiceController(CtrlCode: DWord); stdcall;
begin
server23.Controller(CtrlCode);
end;function Tserver23.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;procedure Tserver23.ServiceExecute(Sender: TService);
begin
timer1.Enabled:=true;
while Not Terminated do
ServiceThread.ProcessRequests(False);
timer1.Enabled:=false;
end;procedure Tserver23.Timer1Timer(Sender: TObject);
begin
assignfile(logfile,'c:\log.txt');
if not FileExists('c:\log.txt') then
rewrite(logfile)
else
append(logfile);
writeln(logfile,'aaaaaaaaa');
closefile(logfile);
end;end.
其它设置都是默认设置,service 的ServiceStartName为空,password也为空。
注册导服务中去以后,启动服务出现错误,弹出对话框:
应用程序初始化(0xc0000142)错误,错误:1053:服务为及时响应启动或控制要求。
请问这是为何?
首先要在Object Inspector里把Interactive设为True,这样才能弹出对话框
另外,同样代码在我这里没有出现问题(Delphi7,Win2K Server),c:\log.txt也正常
你检查一下计算机的设置吧