刚学会一点点,看到一些资料上说SvcMgr和Forms单元中都有Application定义,因此在服务程序中不能使用窗体,不然会引起冲突。但我看到TService有一个属性Interactive指定是否与桌面进行交互,就弄不太明白了。
我的程序有两部分,一部分是后台运行的服务程序,一部分是用于设置一些参数的界面,如果可能我想把这两部分做在一个程序中,而且可以互相传递参数或消息(不知是否可以向Service发送及接收消息);比如后台服务发现某种状况则通知窗体以作某些显示,窗体设置了一些参数则通知后台服务重新读取参数。
我看见过有类似实现的程序,不知Delphi如何做到?
我的程序有两部分,一部分是后台运行的服务程序,一部分是用于设置一些参数的界面,如果可能我想把这两部分做在一个程序中,而且可以互相传递参数或消息(不知是否可以向Service发送及接收消息);比如后台服务发现某种状况则通知窗体以作某些显示,窗体设置了一些参数则通知后台服务重新读取参数。
我看见过有类似实现的程序,不知Delphi如何做到?
还有就是直接运行服务程序没有入口代码,只能起个带参数Install和UnInstall作用,不知是不是?。procedure TServiceTest.ServiceStart(Sender: TService; var Started: Boolean);
begin
if Form2=nil then Form2:=TForm2.Create(Service1);
Form2.Show;//该窗体被关闭后CPU=100%,且服务无法正常Stop
Started:=True;
end;procedure TServiceTest.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
if Form2<>nil then
begin
Form2.Close;
Form2.Free;
Form2:=nil;
end;
Stopped:=True;
end;
$(DELPHI)\Source\Vcl\ScktSrvr.dpr