2

私は現在これを次のように行っています:


// _Container is the panel that the program is to be displayed in.

System.Diagnostics.Process procTest = new System.Diagnostics.Process();
procTest.StartInfo.FileName = "TEST.EXE";
procTest.StartInfo.CreateNoWindow = false;
procTest.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
procTest.Start();

procTest.WaitForInputIdle();
SetParent(procTest.MainWindowHandle, _Container.Handle);
MoveWindow(procTest.MainWindowHandle, 
           0, 0, _Container.Width, _Container.Height, true);

このコードで私が抱えている問題は、MainWindowHandleを変更すると(つまり、ボタンにテキストがない)、アプリケーションUIの一部が正しく機能しなくなることです。

ドッキングされたアプリケーションで問題を引き起こさずにこれを行う方法はありますか?(.netまたはuser32のいずれかを介して)?

4

1 に答える 1

1

まず、1.5秒間待つのではなくprocTest.WaitForInputIdle、メッセージループが解放されるまで待つように呼び出してみてください。 あなたはすでにそうです。

一般的に、あなたがホストしているプログラムを変更せずにこれを行うことは不可能だと思います。

編集:タスクバーから隠れたり、タイトルバーを削除したり、プログラムの移動に合わせて移動したりすることで、他のプログラムをホスティングエリアの上に維持することができます。ただし、これでも完全には機能しません。別の方法を探すことをお勧めします。

サードパーティアプリケーションの元の開発者に連絡して、アドバイスを求めてみてください。

于 2009-09-16T20:58:45.120 に答える