2017-02-28 5 views
-1

私は、サービスまたはデスクトップアプリケーションとして実行されているかどうかを自動的に検出し、状況に応じて適切に動作するかどうかを自動的に検出するアプリケーションで次のコードを使用しています。JclAppサービスとデスクトップ間のインスタンス

JclAppInst.JclAppInstances('<application descriptive label>').CheckSingleInstance; 

コードは、私は、このユニットは、両方の動作モードに含まれている知っているサービスのステータスを承認し、キーデスクトップ情報を表示するためのコードの責任を含有ユニットの下部に初期化ブロックに埋め込まれます。 CheckSingleInstance呼び出しは、デスクトップモードで完全に動作し、1つのインスタンスのみが実行されますが、アプリケーションが現在サービスとして実行されているかどうかを検出できないように見えます。

残念ながら、私はJclAppInstancesがその違いの影響を受ける理由を考え出すことはできません。どちらのインスタンスも同じフォルダから実行されていますが、異なるユーザー(サービスユーザーはデスクトップユーザーとは異なります)として動作していますが、私の理解は異なるユーザーが作業する必要があります。

JclAppInstancesでこれを行うことができるかどうかは誰にも分かりますが、もしあれば私の問題は何ですか?

+0

プロセスは異なるセッションで実行されます。あなたは私が疑わしい独自のコードをロールバックする必要があります。セッション名前空間に名前付きミューテックスを作成する代わりに、グローバル名前空間に作成する必要があります。そして、あなたはそれを適切に確保しなければなりません。 –

答えて

0

JclAppInstancesクラスが必要な機能をサポートしておらず、このJediコンポーネントを使用したソリューションは、次のStackOverflow答えを参照する必要があります。

one instance of app per Computer, how?

関連する問題