替代 Application.DelayInitialize for Delphi 7 服务?

Alternative to Application.DelayInitialize for Delphi 7 Service?

对于 Delphi 7,是否有替代 Application.DelayInitialize 的方法?我正在尝试创建一个托管 COM 服务器的 Delphi 7 服务,但它不起作用,我相信这是因为我没有使用 Application.DelayInitialize.

Re: Windows Service / DelayInitialize

我已经使用 BCB6 编写了几个 COM 托管服务,它们在 Win9x 之后的所有 Windows 版本中都运行良好,所以我不得不多次处理同样的问题。

在Win2003+的进程启动时不要调用Application.Initialize(),等到TServiceOnStartOnExecute事件再调用它。这样,在任何 COM 对象初始化之前,服务 API 是 运行。

诀窍是仅在 Win2003+ 上延迟对 Application.Initialize() 的调用,并且仅在服务实际为 运行 时延迟。如果或者:

,请不要延迟通话
  1. 在早于 2003 的 Windows 版本上,该服务是 运行。
  2. 正在(卸载)安装服务时。
  3. COM 对象正在(未)注册时。

在这些条件下,在进程启动时正常调用 Application.Initialize()

因此,您需要检查 OS 版本和命令行参数以了解何时正确调用 Application.Initialize()