2016-12-24 12 views
0

Delphi 7のApplication.DelayInitializeに代わる方法はありますか? COMサーバーをホストするDelphi 7 Serviceを作成しようとしていますが、動作しません.Apple.DelayInitializeを使用していないためです。Delphi 7サービスのApplication.DelayInitializeの代わりに?

Re: Windows Service/DelayInitialize

+0

*私は自分のサービスがXをやる必要があると信じています。それはXをしません.Xをやる代わりに?*これを正しく理解しましたか? –

+0

それ以外に、どのように問題を診断しましたか?あなたは問題が何であるかを明確に述べることができますか? –

答えて

5

私はBCB6を使用して複数のCOM-ホスティングサービスを書かれている、と彼らはすべて以降のWin9xからWindowsのすべてのバージョンで正常に動作し、私はこの同じ問題を何度も対処しなければなりませんでした。

Win2003 +のプロセス起動時にApplication.Initialize()を呼び出さないでください。TServiceOnStartまたはOnExecuteイベントが呼び出されるまで待ってください。これにより、サービスAPIは、COMオブジェクトが初期化される前に実行されます。

このトリックは、サービスが実際に実行されているときにのみ、Application.Initialize()とWin2003 +の呼び出しを遅らせることです。サービスがインストール(UN)されているときのサービスは2003年

  • より前のバージョンのWindows上で実行されている

    1. いずれか場合、呼び出しを遅らせないでください。
    2. COMオブジェクトが登録されている(未)場合。

    これらの条件では、通常はプロセス起動時にApplication.Initialize()と呼び出します。

    したがって、Application.Initialize()を正しく呼び出すタイミングを知るには、OSのバージョンとコマンドラインパラメータを確認する必要があります。

  • +0

    これは完全に機能しました!どうもありがとうございました。 :) – Joshua

    関連する問題