2011-04-08 5 views
2

WindowsアプリケーションでActiveXコンポーネントをサンドボックスにする方法を知っている人はいますか?クラッシュした場合、アプリケーション全体がダウンすることはありませんか?私はGoogleがFlashでこれをやっているのを見ることができます。どうしたの?ActiveXコンポーネントをサンドボックス化する

私は彼らがprocをホストして、アプリケーション内のUIのみを表示していると思います。これは可能ですか?

私はC#Windowアプリケーションでこれを行うことに興味があります。

答えて

1

私の最初の考えは、これが可能ではないということです。この回答

チェックアウトが

EDIT:Detecting application hangs with ActiveX controls in .Net

それはあなたが何であるか可能性がクロームのFlashサンドボックスは、Adobeが仕事to associate the Flash plugin with the sandboxの多くをしなければならなかったGoogleとアドビシステムズ社との合弁会社でした探している。

また、あなたがこれに見たいと思うかもしれませんのActiveXからのUIに依存している場合:How do I host an application window as a child of a window belonging to another process?

免責事項:私は自分自身をこれを行っていないことは、そう - 誰でも - 私の仮定を修正すること自由に感じなさい。

+0

ありがとうSimen。私はそれが協力的な努力であったことを知らなかった。実際には意味をなさない。 – bobbyalex

+0

もちろん、悪意のあるコードからの保護の目的で、Flashへのブラウザのリンクについても言及しています。あなたのニーズは少し異なります。 –

+0

あなたが望むのは、アプリケーションのフォーム内の特定のUI領域を別のプロセスに分離する必要があり、アプリケーションが十分に制御可能であると同時に、ホストされたウィンドウの背後にあるプロセス「ぶら下がっている」私は正しい? –

0

Google Chromeはどんなプラグインであってもクラッシュしてもプロセス全体を停止させないように設定されています。実際、彼らはFlashのActiveX版をまったく使用していません...彼らはFirefoxとSafariと同じNPAPI版を使用しています。

私はあなたも使うことができますが、扱いにくいかもしれないというトリックは、彼らが別のプロセスでプラグインを起動するということです。 Firefox 4は同じことをやっています(実際にはあなたのタスクバーを見ると、Flashが実行されているときにFirefox用のplug-container.exeプロセスが表示され、chrome.exeプロセスがさらに起動されます)。それは別個のプロセスなので、クラッシュする可能性があり、アプリケーションを削除しません。他のプロセスが現在行かなくなったことを検出し、それに応じて行動します。

とにかく、私はc#で複数のプロセスを実行したことはありませんが、可能であると思います。これは、AFAIKのようなものを「サンドボックス化」するための最も一般的な方法です。私はC++でそれを行うことができましたが(そして持っていますが)、C#は扱いにくいかもしれません。

+0

しかし、私はアウトプロセスプロセスからのUIを別のものでホストできるかどうかはわかりません。それは基本的に私が望むものです。 – bobbyalex

+0

HWNDはシステムに対してグローバルです。再び、これは.NETでどのくらい簡単かわかりませんが、子プロセスにHWNDを渡すことができれば、親プロセス内に子プロセスHWNDを作成して、その子プロセスHWNDを作成することができます。子供HWNDが必要な唯一の理由は、親からWINPROCを取得できないためです。 – taxilian