WPF, открывающийся exe программа в окне WPF

Не уверенный, если это возможно, но является там способом открыть другую программу как блокнот в контейнере окна WPF? подобный той из способности открыть веб-страницу с помощью управления webbrowser?

В основном я хотел бы открыть блокнот или другой exe, но сохранить ограниченным в контейнере окна WPF, использующем xaml/c# код? не уверенный, если возможный?

6
задан SwiftLion 9 April 2010 в 21:06
поделиться

3 ответа

удалось сделать это с помощью метода SetParent

[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr SetParent(IntPtr hwc, IntPtr hwp);

, поэтому, получив дескрипторы окна wpf, а затем окна exe, я смог установить окно wpf в качестве родительского, чтобы оно имитировало встраивание (также закрыл строка заголовка и т. д.)

получили помощь отсюда: http://channel9.msdn.com/forums/TechOff/250417-Hide-window-caption-in-c/

1
ответ дан 17 December 2019 в 02:26
поделиться

Вы не можете этого сделать.

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

Общие EXE-файлы не работают, и вы не можете встроить их в свое приложение.

-1
ответ дан 17 December 2019 в 02:26
поделиться

Да, это возможно.

Все, что вам нужно сделать, это:

  1. Создать WindowsFormsHost и добавить его на панель в пользовательском интерфейсе
  2. Запустить процесс (например, Блокнот) с помощью Process.Start
  3. Вызвать process.WaitForInputIdle
  4. Используйте process.MainWindowHandle для получения дескриптора окна
  5. . Вызовите SetWindowPos, чтобы установить для окна процесса координаты и Z-порядок окна HwndHost.
  6. Перехватите HwndHost и process.MainWindowHandle для обнаружения изменений размера и повторите шаг 5.

Сделать все это довольно просто. Эффект заключается в том, что все окно Блокнота (или любое другое приложение, которое вы запустили) отображается и ведет себя точно так же, как если бы оно было частью вашего приложения WPF.

6
ответ дан 17 December 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: