发个帖:createservice创建的服务无法启动,有经验的大神指教下
需求:一个普通的EXE 添加服务功能 createservice后
别说程序启动,就是在本地服务里手工启动服务也失败,如下
问题错误:无法启动服务 1053服务没有及时响应启动或控制请求
先上代码:
[解决办法]
服务和普通app是有区别的,服务需要注册,服务的Application和普通窗口应用的Application不是同一个对象
下面的例子,如果带有-ui参数,则以非服务启动,否则就是服务程序
program DemoServer;
uses
SysUtils,
SvcMgr,
Forms,
SvcUIFrm in 'SvcUIFrm.pas',
DBSvcFrm in 'DBSvcFrm.pas';
begin
if FindCmdLineSwitch('ui') then
begin
Forms.Application.Initialize;
Forms.Application.MainFormOnTaskbar := True;
Forms.Application.CreateForm(TSvcUIForm, SvcUIForm);
Forms.Application.Run;
end
else begin
if not SvcMgr.Application.DelayInitialize or SvcMgr.Application.Installing then
SvcMgr.Application.Initialize;
SvcMgr.Application.CreateForm(TDBSvc, DBSvc);
SvcMgr.Application.Run;
end;
end.
[解决办法]
服务程序的代码没贴出来这个只是创建服务,你都创建成功了。都可以看到这个服务了。
而服务不能起来是你服务程序本身决定的,检查你RegisterServiceCtrlHandler注册的函数有没有正确处理外部命令?