Я заметил, что все предыдущие ответы используют более старые функции библиотеки пользователя Win32 для достижения этой цели. Я думаю, что это будет работать в большинстве случаев, но со временем будет работать менее надежно.
Теперь, не сделав этого, я не могу сказать вам, насколько хорошо это будет работать, но я знаю, что текущая технология Windows могла бы быть лучшим решением: Desktop Windows Manager API .
DWM - это та же технология, которая позволяет просматривать в реальном времени эскизы приложений с помощью панели задач и интерфейса переключателя задач. Я считаю, что это тесно связано со службами удаленного терминала.
Я думаю, что вероятная проблема, которая может возникнуть, когда вы заставляете приложение быть дочерним по отношению к родительскому окну, не являющемуся окном рабочего стола, состоит в том, что некоторые разработчики приложений делают предположения относительно контекста устройства (DC), указателя (мыши) ) положение, ширину экрана и т. д., что может привести к ошибочному или проблематичному поведению, когда оно «встроено» в главное окно.
Я подозреваю, что вы можете в значительной степени устранить эти проблемы, полагаясь на DWM, который поможет вам управлять переводами, необходимыми для надежного представления окон приложения и взаимодействия с ними внутри окна контейнера другого приложения.
Документация предполагает программирование на C ++, но я нашел одного человека, который создал то, что, как он утверждает, является библиотекой оболочки C # с открытым исходным кодом: https://bytes.com/topic/c-sharp/answers/823547-desktop-window-manager-wrapper. Пост старый, а исходный код находится не в большом репозитории, таком как GitHub. , bitbucket или sourceforge, так что я не знаю, насколько это актуально.