首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

做服务程序遇到的有关问题.为什么启动一下之后,什么也没有呢

2012-03-02 
做服务程序遇到的问题.为什么启动一下之后,什么也没有呢?我新建一个服务程序后.项目主程序的代码如下:begi

做服务程序遇到的问题.为什么启动一下之后,什么也没有呢?
我新建一个服务程序后.

项目主程序的代码如下:
begin
    Application.Initialize;
    Application.CreateForm(TService1,   Service1);
    Application.Run;
end.

而服务类的代码如下:
    TService1   =   class(TService)
      ...
    end;

procedure   ServiceController(CtrlCode:   DWord);   stdcall;
begin
    Service1.Controller(CtrlCode);
end;

function   TService1.GetServiceController:   TServiceController;
begin
    Result   :=   ServiceController;
end;

procedure   TService1.ServiceExecute(Sender:   TService);
begin
    Stream   :=   TMemoryStream.Create;

end;

procedure   TService1.ServiceStart(Sender:   TService;   var   Started:   Boolean);
begin
    SparkyThread   :=   TSparkyThread.Create(False);
    Started   :=   True;

end;

procedure   TService1.ServiceContinue(Sender:   TService;
    var   Continued:   Boolean);
begin
    SparkyThread.Resume;
    Continued   :=   True;

end;

procedure   TService1.ServicePause(Sender:   TService;   var   Paused:   Boolean);
begin
    SparkyThread.Suspend;
    Paused   :=   True;

end;

procedure   TService1.ServiceStop(Sender:   TService;   var   Stopped:   Boolean);
begin
    SparkyThread.Terminate;
    Stopped   :=   True;

end;

线程类的代码如下:
    TSparkyThread   =   class(TThread)
    private
        {   Private   declarations   }
    protected
        procedure   Execute;   override;
    end;
procedure   TSparkyThread.Execute;
begin
    while   not   Terminated   do
    begin
        Beep;
        Sleep(500);
    end;

end;

我基本上100%抄DELPHI帮助上的例子了.上面的代码,很可能在运行服务程序时会先调用TService1.ServiceStart.但是很奇怪,一运行这个程序,在每段都加上了断点,但发现上面的代码一句也没有执行.....程序只是运行了一下,马上就停止了.为什么会这样呢?错在哪?


[解决办法]
service程序要安装才能执行吧。


[解决办法]
安装: project1 /install


另外,貌似执行体程序应该写在ServiceExecute中。

[解决办法]
得先调用WINEXEC API 来执行注册命令 没有注册服务是不可能执行你的代码

还需要把服务手动启动

注册命名索性告诉你好了

WinExec( 'net stall '+注册的服务名,0)

热点排行