Мне нужно убедиться, что explorer.exe
работает как системная оболочка. Что мне нужно сделать, это:
- Перезаписать текущую оболочку (
Winlogon\Shell
) с помощью explorer.exe
- Выполнить
explorer.exe
(как оболочка)
- Перезаписать текущую оболочку моей собственной оболочкой.
Между двумя последними шагами проходит гонка:
- Если я слишком быстро перезаписываю текущую оболочку своей собственной оболочкой, открывается только окно «Мои документы».
Итак, вопрос в том, есть ли какие-либо события / мьютексы / обратные вызовы, которые я могу вызвать, чтобы убедиться, что проводник инициализирован как shell?
Лучшее, что мне удалось сделать, - это дождаться появления окна в трее:
while(!FindWindow("Shell_TrayWnd", NULL)) {
sleep(250);
}
Что кажется неаккуратным, есть ли лучший способ?