2013-07-30 4 views
0

Я пытаюсь заменить все обычные вызовы Windows Common (Open/Save) filedialog с помощью собственного пользовательского диалога. Из того, что я прочитал до сих пор, я мог сделать это с помощью крючка на звонках, написав свои собственные или используя библиотеки, такие как обходные пути или easyhook. Но кто-то недавно сказал мне, что такой подход возможен только до Vista, из-за изменения архитектуры сессий, и в Win 7/8 невозможно сделать такой переход. Теперь я не парень, которому нравится слово «невозможно». Поэтому, если у вас есть какие-либо советы по этому вопросу, пожалуйста, расскажите, и я буду признателен вам за вашу доброту.Могут подключаться обычные диалоговые окна 7 и 8.

Для того, что мне делать, мое приложение будет выполняться пользователем, оно будет находиться в лотке, и когда пользователь вызывает диалог открытия/сохранения из любого приложения, он должен заменить стандартный диалог по умолчанию на настраиваемый диалог.

+0

Пожалуйста, сделайте это необязательным. По крайней мере, некоторые из ваших пользователей лучше будут использовать версию с Windows. –

+0

Вы когда-нибудь делали крючки раньше? –

+2

Это не поддерживается. Не сказать, что это невозможно, просто, что он не поддерживается. Вы также входите в опасный мир app compat, так как приложения делают всевозможные сумасшедшие вещи для общих диалогов. Например, есть все сообщения CDM, уведомления CDN, шаблоны настройки ... –

ответ

4

Поздний стиля Common Item dialogs реализован как стандартные COM-объекты, так что вы можете просто реализовать свой собственный DLL, который предоставляет те же COM интерфейсы (IFileOpenDialog, IFileSaveDialog и т.д.), а затем отменяют регистрацию по умолчанию в реестре с вашим собственным. Таким образом, каждое приложение, использующее диалоги, загрузит вашу DLL вместо Microsoft.

+0

Могу ли я спросить, есть ли у этого подхода какие-либо задержки осложнений. Например, когда пользователь устанавливает новые программы или когда ОС имеет обновление? –

+0

Приложения не будут иметь никакого влияния на него, но обновление/восстановление ОС может восстановить регистрацию по умолчанию. –