Проблема в том, что Windows Explorer также предоставляет всю оболочку для Windows. Поэтому, когда вы нажимаете этот значок папки, вы, скорее всего, уже используете проводник. Он просто запускает другой процесс (или окно).
Возможно, вы захотите посмотреть на замены оболочки.
Обновить
Хорошо, позвольте мне немного подробнее рассказать о моем понимании вещей.
Как работает вся система
Начнем с моего рабочего стола.
Мой рабочий стол нарисован оболочкой. Оболочка предоставляется начальным процессом explorer.exe
который запускается при запуске Windows. Если у меня есть папка на рабочем столе:
Я могу дважды щелкнуть по нему, чтобы открыть его:
Это создало новый процесс explorer.exe
который теперь отображает окно с содержимым моей папки. Но есть много способов, чтобы одно и то же окно могло быть открыто.
Так почему Windows решила использовать explorer.exe
для отображения этой папки?
Ну, как я уже сказал, рабочий стол уже является процессом explorer.exe
. Поэтому он будет просто использовать ShellExecuteEx()
чтобы позволить оболочке решить, что с ней делать. После этого оболочка создаст новый экземпляр explorer.exe
(поскольку, насколько мне известно, это сложно сделать).
Так что вы можете сделать, это не использовать explorer.exe
для обеспечения вашей оболочки (как вы, кажется, уже делаете). Вы можете просто предоставить альтернативное приложение в реестре под:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
Но никто не мешает этой новой оболочке вызывать ShellExecuteEx()
, которая снова вызовет оболочку по умолчанию и, следовательно, explorer.exe
!
И что теперь?
Так что если вы действительно хотите заменить Windows Explorer, замените файл explorer.exe
. Потому что, в конце концов, каждая программа может попытаться выполнить C:\Windows\explorer.exe
напрямую, и тогда у вас снова будет тот же старый Проводник.
Но, пожалуйста, имейте в виду, что я никогда не пытался заменить explorer.exe
в системе, поэтому я не знаю, возможно ли и / или стабильно ли это использовать.
Как приложение XYZ это делает?
Есть несколько приложений, которые просто подключаются к Explorer, например QTTabBar. Может быть, Explorer++ работает так же. Таким образом, вам не нужно ничего трогать, так как ваша модификация всегда загружается в новые процессы explorer.exe
. Детальное описание этого процесса потребовало бы совершенно нового ответа.
А как насчет диалога открытия файла?
Это целый новый набор проблем. Диалоги « Сохранить файл» и «Открыть файл» являются частью библиотеки общих диалогов. Попытки заменить их сложно представить. Примерно то же самое можно сказать о тех, что я сказал о explorer.exe
. Но это было бы гораздо страшнее.