【来人啊】Delphi服务与程序的交互问题

时间:2023-01-06 21:12:29
最近在学习做服务程序的开发,这是在网上下载的一个示例后改动的!

小弟的需求是,把程序中的TCP服务端程序做成一个服务,在程序中有2个交互界面
  frmSysServer:这个是作主要控制服务的界面
  frmTCPServer:这个是作TCP通讯服务的界面

现在如果这个服务程序运行的话(这里的运行不是指服务启动,而是程序文件直接运行),使用TCP客户端能可以连接到TCP服务端,如果将这个程序退出后,在服务中启动该服务,使用TCP客户端不能连接到TCP服务端。

服务已经设置好:运行服务与桌面交互

如果需要做到服务启动后,不运行服务程序,使TCP客户端能连接上,应该怎么处理!请各位大神指点指点!

程序的工程文件如下:

program ProSysServer;

uses
  SvcMgr,
  Forms,
  Windows,
  SysUtils,
  U_WinSysServer in 'U_WinSysServer.pas' {frmSysServer},
  U_SvrControl in 'U_SvrControl.pas',
  U_SysServer in 'U_SysServer.pas',
  U_MsgDialogs in 'U_MsgDialogs.pas' {frmMsgDialogs},
  U_TcpServer in 'U_TcpServer.pas' {frmTCPServer},
  U_Global in 'U_Global.pas';

{$R *.res}

begin
  if not SysServerInstalling then
  begin
    CreateMutex(nil, True,PChar(SysServerMutexID));
    if GetLastError = ERROR_ALREADY_EXISTS then
    begin
      MessageBox(0, PChar(AlreadyRunning), PChar(SysServerDisplayName), MB_ICONERROR);
      Halt;
    end;
  end;

  if SysServeInstalling or SysServerStartService then
  begin
    SvcMgr.Application.Initialize;
    UserSysService := TUserSysService.CreateNew(SvcMgr.Application, 0);
    SvcMgr.Application.CreateForm(TfrmSysServer, frmSysServer);
    SvcMgr.Application.Run;
  end else
  begin
    Forms.Application.ShowMainForm := False;
    Forms.Application.Initialize;
    Forms.Application.CreateForm(TfrmSysServer, frmSysServer);
    Forms.Application.CreateForm(TfrmTCPServer, frmTCPServer);
    frmSysServer.Initialize(False);
    Forms.Application.Run;
  end;
end.

6 个解决方案

#1


没人吗 【来人啊】Delphi服务与程序的交互问题 人工置顶

#2


没人吗  【来人啊】Delphi服务与程序的交互问题人工置顶

#3


没人吗  【来人啊】Delphi服务与程序的交互问题人工置顶

#4


别顶了, 把你的QQ发上来 , 加你吧

#5


引用 4 楼  的回复:
别顶了, 把你的QQ发上来 , 加你吧

哥 我QQ 280656835

#6


问题已得到楼上兄台的帮助下解决了!

#1


没人吗 【来人啊】Delphi服务与程序的交互问题 人工置顶

#2


没人吗  【来人啊】Delphi服务与程序的交互问题人工置顶

#3


没人吗  【来人啊】Delphi服务与程序的交互问题人工置顶

#4


别顶了, 把你的QQ发上来 , 加你吧

#5


引用 4 楼  的回复:
别顶了, 把你的QQ发上来 , 加你吧

哥 我QQ 280656835

#6


问题已得到楼上兄台的帮助下解决了!