Компоненты ActiveX для песочницы - PullRequest
2 голосов
/ 08 апреля 2011

Кто-нибудь имеет представление о том, как поместить компоненты ActiveX в изолированную программную среду в приложении для Windows, чтобы в случае сбоя оно не разрушало все приложение вместе с ним? Я вижу, как Google делает это с Flash. Как это сделать?

Я думаю, что они размещают его на Proc, а затем показывают только пользовательский интерфейс только в приложении. Это возможно?

Я заинтересован в том, чтобы сделать это в приложении C # Window.

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

Моя первоначальная мысль - это было бы невозможно.Песочница Chrome Flash была совместным предприятием между Google и Adobe, где Adobe пришлось проделать большую работу , чтобы связать плагин Flash с песочницей :

EDIT

Проверьте этот ответ: Обнаружение зависания приложения с помощью элементов управления ActiveX в .Net

Это может быть то, что вы ищете.

Кроме того, если выполагаются на пользовательский интерфейс из ActiveX, вы можете посмотреть на это: Как разместить окно приложения в качестве дочернего элемента окна, принадлежащего другому процессу?

Отказ от ответственности: У меня естьЯ сам этого не делал, так что - никому - пожалуйста, не стесняйтесь исправлять мои предположения.

0 голосов
/ 23 мая 2011

Google Chrome настроен таким образом, что независимо от того, какой это плагин, в случае сбоя он не останавливает весь процесс.Фактически, они вообще не используют ActiveX-версию Flash ... они используют версию NPAPI, такую ​​же, как Firefox и Safari.

Трюк, который использует Chrome, который, я полагаю, вы могли бы также использовать, номожет быть сложно, это то, что они запускают плагин в отдельном процессе.Firefox 4 начал делать то же самое, фактически (если вы посмотрите на панель задач, вы увидите процесс plugin-container.exe для Firefox, когда флэш-память работает; Chrome просто запускает больше процессов chrome.exe).Поскольку это отдельный процесс, он может завершиться сбоем и не уничтожить ваше приложение;вы просто обнаруживаете, что другой процесс уже завершен, и действуете соответствующим образом.

В любом случае, я никогда не делал несколько процессов в c #, но я предполагаю, что это возможно.это самый распространенный метод «песочницы», что-то вроде этого AFAIK.Я мог бы сделать это в C ++ (и есть), но C # может быть сложнее.

...