用于Delphi 7服务的Application.DelayInitialize的替代方案?

Jos*_*hua 0 delphi dcom delphi-7

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

Re:Windows服务/ DelayInitialize

Rem*_*eau 5

我已经使用BCB6编写了几个COM托管服务,它们在Win9x以后的所有Windows版本中都可以正常工作,所以我不得不多次处理同样的问题.

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

诀窍是Application.Initialize()在Win2003 +上将呼叫延迟到ONLY,并且仅在服务实际运行时.如果以下情况,请勿延迟通话:

  1. 该服务在早于2003的Windows版本上运行.
  2. 当(未)安装服务时.
  3. 当(对象)正在(未)注册时.

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

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