1
レガシーコードにアクセスするには、いくつかのOCXライブラリをロードする必要があります。私はActivator.CreateInstanceを使用してインスタンスを作成してい :同じOCXの複数のインスタンスを作成する
var type = Type.GetTypeFromProgID(ProgId);
var comObject = Activator.CreateInstance(type);
残念ながらActivator.CreateInstanceは、ProgIdごとに1つのインスタンスを作成しているようだ、しかし私は、異なる構成を持つ複数のインスタンスを必要としています。
例:私はOCXのウィッヒを使用していますと仮定すると値を設定することができます:
var instance1 = Create(progId);
Set(instance1, "key", "1");
var value1 = Get(instance1, "key"); // returns 1
var instance2 = Create(progId);
Set(instance2, "key", "2");
var value2 = Get(instance2, "key"); // returns 2
var value3 = Get(instance1, "key"); // returns 2
私は1つOCX(同じプログラムID)をインスタンス化する方法が必要ではただ一つのインスタンスに渡した参照を取得せずに複数回を制御します。
バグ(グローバル変数)、意図的な可能性があります。それは通常です。これを調整するノブはなく、OCXベンダーと協力してください。 –
ありがとうございました。 OCXは私達の会社によって書かれています。グローバル変数が問題になるかもしれないと思います。私はこの考え方を検証しようとします。 – Zebi