0

JclAppInstances を使用してアプリ インスタンスを制御しようとしています。プロジェクト設定でファイル バージョンを変更しない限り、問題なく動作します。JclAppInstances をアプリ ファイルのバージョンに依存しないようにして、バージョンが異なっていてもユーザーがアプリケーションの複数のコピーを起動できないようにする方法は?

4

1 に答える 1

4

私が知る限り、あなたが話しているクラスはアプリケーションのバージョンを気にしません。アプリケーションパスに基づいていますが、一意のアプリケーション ID を自分で指定していない場合のみです。

このTJclAppInstances.InitDataメソッドは、次のコードを使用して内部アプリケーション ID を初期化します。

if ExplicitUniqueAppId <> '' then
  FUniqueAppID := JclAIPrefix + ExplicitUniqueAppId
else
  FUniqueAppID := AnsiUpperCase(JclAIPrefix + ParamStr(0));

ExplicitUniqueAppId空で始まるグローバル変数です。他の値に設定されていない場合は、コードがParamStr(0)アプリケーション ID の設定に使用されていることがわかります。ParamStr(0)アプリケーションのフル パスとファイル名を返します。プログラムの複数のバージョンがインストールされている場合、それらは異なる場所にある必要があります。そのため、プログラムがアプリケーションのバージョンを気にしているように見えます。実際には、それらが異なる場所にあるだけです。特定のバージョンは関係ありません。

ExplicitUniqueAppId空でない値に設定するには、引数が 1 つのバージョンの を呼び出すJclAppInstances必要があります。パラメーターはアプリケーション固有の GUID ( IDE でCtrl+ Shift+Gを押して生成できます) であると想定されますが、アプリケーションを一意に識別する限り、実際には選択した任意の文字列にすることができます。

于 2012-11-12T16:37:59.033 に答える