Подход в моем ответе не тот, который я бы порекомендовал, так как это в основном огромный взлом. Тем не менее, можно «разместить» практически любое приложение Windows внутри другого. Предостережения:
- Это большой толстый хак
- Я совсем не уверен, насколько хорошо он работает с различными функциями безопасности, например, в Vista
- Вы будете все время работать с низкоуровневыми и иногда недокументированными API-интерфейсами и делать вещи, которые не соответствуют ожиданиям оригинальных дизайнеров.
- Я недостаточно хорошо знаю различные API, чтобы точно сказать вам, что делать, так что это очень грубый набросок ...
Основной подход заключается в следующем:
- Запустить новый процесс explorer.exe
- Получи свой HWnd
- Используя вызовы p / invoke в различные API-интерфейсы Windows (в основном это shell32.dll), переопределите его в своем собственном NativeWindow или UserControl.
- Затем вы можете заменить его обработчик сообщений WndProc своим собственным, разделив его на подклассы, чтобы внедрить свое собственное поведение, специфичное для приложения. ( C ++ пример ; stackoverflow вопрос WRT, вызывающий старый / default WndProc; googling даст много ответов. Я делал это раньше в C # и ( ick) VBA) Это позволит вам заменить различные варианты поведения пользовательского интерфейса своим собственным, очень низким уровнем. (Это зависит от того, как именно реализован проводник: вещи более высокого уровня, такие как щелчки меню, могут получать свое собственное сообщение и, следовательно, их легче обрабатывать; но в других аспектах поведения проводника вы можете получить только необработанные сообщения мыши.)
Вам понадобится Spy ++ , чтобы выяснить, какие сообщения происходят, когда.
Да, это отличный способ создать множество очень уродливого и хрупкого кода, но иногда это (а) единственный способ заставить все работать правильно; и (б) отлично подходит для изучения того, что происходит под капотом Windows. Forms / MFC / etc.