Я пытаюсь заменить все вызовы файлового диалога Windows Common (Открыть / Сохранить) собственным диалоговым окном. Из того, что я читал до сих пор, я мог сделать это с помощью ловушки на вызовах, либо написав свои собственные, либо используя такие библиотеки, как обходы или easyhook. Но кто-то недавно сказал мне, что такой подход возможен только до Vista, из-за изменения архитектуры сессий, и такое переключение невозможно в Win 7/8. Теперь я не парень, которому нравится слово «невозможно» 🙂 Так что, если у вас есть какие-либо советы по этому вопросу, пожалуйста, скажите, и я буду признателен за вашу доброту.
Что бы я ни делал, мое приложение будет запускаться пользователем, оно будет находиться в трее, и когда пользователь вызывает диалог открытия / сохранения из любого приложения, он должен заменить стандартный диалог по умолчанию на собственный диалог.
Новый стиль Диалоги общих элементов реализованы как стандартные объекты COM, так что вы можете просто реализовать свою собственную DLL, которая предоставляет те же интерфейсы COM (IFileOpenDialog
, IFileSaveDialog
и т. д.), а затем переопределите стандартные регистрации в реестре своими собственными. Таким образом, каждое приложение, которое использует диалоги, будет загружать вашу DLL вместо Microsoft.
Других решений пока нет …