Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > [VC++] Открыть с помощью - список для расшиерния


Автор: MuForum 31.7.2009, 00:03
Добрый день.

# Задача: Необходимо добавить программу в список "Открыть с помощью" для конкретного расширения.
- То есть, например для расширений .txt необходимо добавить в секцию "Рекомендуемые программы:" мою программу.


P.S. -> Знаю, что это нужно копаться в реестре.

Автор: Cheloveck 31.7.2009, 08:22
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.<расширение>\OpenWithList

Добавлено через 1 минуту и 43 секунды
PS
Цитата(MuForum @  31.7.2009,  01:03 Найти цитируемый пост)
P.S. -> Знаю, что это нужно копаться в реестре. 

так копайся. Я за 2 минуты это нашёл.

Автор: MuForum 31.7.2009, 12:26
#2, Cheloveck - По данному пути, к сожалению, нет списка программ с "Открыть с помощью".

"Regmon" мне показал, что происходит обращение по следующим путям:
Цитата

HKCR\.extension
HKCR\SystemFileAssociations\.extension
HKCU\Software\Classes\.extension
HKCU\Software\Classes\SystemFileAssociations\.extension
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.extension

- Но не по одному из них я не нашел то, что мне нужно было.


# Добавлено: По следующему пути "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.extension\OpenWithList" распологается строковые поля с именами программ, которые могут быть показаны в списке.
Далее в поле "MRUList" пишутся имена этих поле, которые должны показываться в списке.
Далее возникает вопрос, а где хранится информация о этих программах?

Автор: MuForum 31.7.2009, 14:40
# for all - В общем разобрался.

Во-первых: Переходим по следующему пути [HKEY_CLASSES_ROOT\Applications]
- Создаём следующий путь: [HKEY_CLASSES_ROOT\Applications\ProgramName.exe\shell\open\command]
- default vaule: "FilePath %1"
Во-вторых: Переходим по следующему пути [HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.extension\OpenWithList]
- Создаём строковое поле, имя которого будет латинская буква.
- Записываем в это поле имя нашей программы, которое мы указали при создание в пункте №1.
- Затем добавляем в строковое поле "MRUList" нашу букву.


P.S. -> Благодарю всех, кто принимал участие.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)