0

Win7 で C++/CLI、.net 4.5、VS2012 でコーディングしています。

System::Diagnostics::Process(::Start())を使用して2番目のプロセスB.exeを開始するメインプロセスA.exeがあります。

2 番目のプロセスB.exeは、(ネイティブ) DLL C.dllを使用します。

C.dllでは、次のように static を宣言しました。

static bool B = true;
if(B == true )
{
    MyFile << "Switch true to false" << endl;
    B=false;
}
MyFile << _getpid() << endl;

私が得るのは、 _getpid() が B.exe の PID ではなく、 A.exe の PID を返すことですA.exeではなく、C.dllがプロセスB.exeに関連付けられるのは難しいと思います。?????????

また、A.exeでB.exeを数回 (たとえばループで)起動すると、static 変数が true にリセットされることはありません。なんで?

それが役立つかどうかはわかりませんが、私は使用します:

StartProcessInfo.UseShellExecute = false;
StartProcessInfo.CreateNoWindow = true;

他のフィールドはデフォルト値のままです。

誰かが私を助けることができますか?

ありがとう!


更新 1

最後に、A.exeB.exeの両方がC.dllを読み込みます。しかし、疑問が残ります: DLL 内の静的変数は、実行可能ファイルごとに 1 回ずつ、2 回マップされるべきではありませんか???? また、PID を書き込む関数を呼び出すと、B.exeから呼び出されます。この間、A.exeはB.exeの完了を待機するためです。

4

0 に答える 0