Создайте WPF-элемент управления, который запускается во внешнем процессе. - PullRequest
1 голос
/ 14 июля 2009

У меня есть приложение WPF, которое содержит несколько дочерних элементов управления.

Один из этих элементов управления содержит стороннюю библиотеку, которая под крышками выполняет некоторый нативный код, который генерирует нарушения прав доступа и вылетает из приложения. К сожалению удаление библиотеки не вариант.

То, что я хотел бы сделать, это запустить новый процесс Windows, разместить внутри него стороннюю библиотеку и каким-то образом связаться с ним. Почти так же, как Google Chrome и IE8 обрабатывают плагины для браузера.

Проблема в том, что сторонняя библиотека должна рисовать на экране, поэтому мне нужно каким-то образом иметь эквивалент iframe HTML внутри главного окна моего приложения WPF.

Я не уверен, с чего начать, пока сложно гуглить. Любой совет с благодарностью.

Ответы [ 3 ]

4 голосов
/ 14 июля 2009

Это сложный вопрос, но, к счастью для вас, в последнее время в этом месте проделывается небольшая работа.

Слышали ли вы о пространстве имен System.Addin в .NET 3.5? Это может помочь в этом случае. Это позволяет загружать элементы управления в отдельный домен приложений, но отображать в том же пользовательском интерфейсе. Я бы подумал, что вам придется проделать небольшую работу, чтобы все правильно обменивалось информацией (никогда раньше этого не делали), но это возможно.

Посмотрите на этот ранний пост от команды надстроек: http://blogs.msdn.com/clraddins/archive/2007/08/06/appdomain-isolated-wpf-add-ins-jesse-kaplan.aspx

Похоже, они хранят свои образцы и вспомогательный код в кодплексе: http://clraddins.codeplex.com/

Я очень заинтересован в этом, поэтому, если у вас все получится, дайте нам знать, как все прошло для вас!

0 голосов
/ 04 февраля 2011

Опаздываете. Если вам все еще нужно это, вы видели этот проект: http://blogs.msdn.com/b/changov/archive/2009/10/26/hosting-wpf-ui-cross-thread-and-cross-process.aspx

Я запускаю несколько плагинов в нескольких внешних процессах в моем приложении LOB Мои рамки выросли из проекта выше.

0 голосов
/ 14 июля 2009

Наверное, не самая легкая из задач. Рассматривали ли вы размещение своих сторонних материалов в отдельном домене приложений? Таким образом, вы также получите хороший уровень изоляции, избавив вас от хлопот другого проекта. Нужно ли обновлять его постоянно, или вы можете обновить его в предварительно определенных точках своего приложения? Возможно, тогда будет возможна какая-то схема, где вы в основном делаете скриншот стороннего вывода и отображаете его как изображение в исходном приложении ...

...