2016-12-24 24 views
0

Есть ли альтернатива Application.DelayInitialize для Delphi 7? Я пытаюсь создать службу Delphi 7, на которой размещен COM-сервер, но он не работает, и я считаю, что это потому, что я не использую Application.DelayInitialize.Альтернатива Application.DelayInitialize для службы Delphi 7?

Re: Windows Service/DelayInitialize

+0

* Я считаю, что моя служба должна делать X. Это не делает X. Есть ли альтернатива X? * Я правильно понял это? –

+0

Помимо этого, как вы диагностировали проблему. Можете ли вы четко указать, в чем проблема. –

ответ

5

Я написал несколько COM-хостинг услуг с использованием BCB6, и все они прекрасно работают во всех версиях Windows, от Win9x годов, так что я должен был иметь дело с этим же эмиссионными много раз.

Просто не называйте Application.Initialize() при запуске процесса на Win2003 +, ждать, пока TService «s OnStart или OnExecute случае назвать его. Таким образом, API-интерфейс службы запускается до инициализации любых COM-объектов.

Трюк заключается в том, чтобы отложить вызов до Application.Initialize() ТОЛЬКО на Win2003 + и ТОЛЬКО, когда служба фактически запущена. Не откладывайте вызов, если либо:

  1. Сервис работает на версиях Windows, ранее 2003
  2. когда услуга быть (не) установлен.
  3. когда COM-объект регистрируется (un).

В этих условиях звоните Application.Initialize() обычно при запуске процесса.

Итак, вам нужно проверить версию ОС и параметры командной строки, чтобы знать, когда правильно позвонить Application.Initialize().

+0

Это сработало отлично! Большое спасибо. :) – Joshua